归并排序—Python实现

归并排序

归并排序是递归算法,思路是将数据表持续分裂为两半,对两半分别进行归并排序

递归的基本结束条件:数据表仅有一项,自然是排好序的

缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一

调用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并,得到排好序的数据表

归并排序—Python实现_第1张图片

代码

def mergeSort(alist):
    if len(alist)>1:
        mid=len(alist)//2
        lefthalf=alist[:mid]
        righthalf=alist[mid:]
        mergeSort(lefthalf)
        mergeSort(righthalf)
        i=j=k=0
        while i 

最简便写法(体现了Python的强大)

def mergeSort(alist):
    if len(alist)<=1:
        return alist
    middle=int(len(alist)/2)
    left=mergeSort(alist[:middle])
    right=mergeSort(alist[middle:])
    merged=[]
    while left and right:
        merged.append(left.pop(0) if left[0]

你可能感兴趣的:(python学习)