您的位置:首页 > 编程语言 > Python开发

Merge Sort(归并排序)的JAVA与Python实现

2015-12-31 17:32 651 查看
最近学习到了merge sort(归并排序)这种算法,想实现它。恰逢有同时在学习java与python,于是便想用两种方法都来试一下。以下是我的学习过程。

merge sort有以下步骤

1.先分割,直到分割成最小单位

2.再归并

只要逻辑梳理清楚,算法的实现就比较简单。

#这是python的mergesort实现

def mergeSort(alist):

    print("Splitting ",alist)

    if len(alist)>1:

        mid = len(alist)//2

        lefthalf = alist[:mid]

        righthalf = alist[mid:]

        mergeSort(lefthalf)

        mergeSort(righthalf)

        i=0

        j=0

        k=0

        while i < len(lefthalf) and j < len(righthalf):

            if lefthalf[i] < righthalf[j]:

                alist[k]=lefthalf[i]

                i=i+1

            else:

                alist[k]=righthalf[j]

                j=j+1

            k=k+1

        while i < len(lefthalf):

            alist[k]=lefthalf[i]

            i=i+1

            k=k+1

        while j < len(righthalf):

            alist[k]=righthalf[j]

            j=j+1

            k=k+1

    print("Merging ",alist)

alist = [54,26,93,17,77,31,44,55,20]

mergeSort(alist)

print(alist)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mergesort 归并排序