1. 程式人生 > >歸併排序(別名:分治排序)

歸併排序(別名:分治排序)

def merge_sort(alist):
    '''歸併排序'''
    n=len(alist)
    if n<=1:
        return alist
    mid = n//2
    left_li = merge_sort(alist[:mid])
    right_li = merge_sort(alist[mid:])
    left_pointer,right_pointer = 0,0
    result=[]
    #new一個新列表,對新列表進行追加
    while left_pointer<len(left_li) and right_pointer<len(right_li):
        if left_li[left_pointer]<right_li[right_pointer]:
            result.append(left_li[left_pointer])
            left_pointer+=1
        else:
            result.append(right_li[right_pointer])
            right_pointer+=1
    result += left_li[left_pointer:]
    result += right_li[right_pointer:]
    return result