归并排序(别名:分治排序)

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

猜你喜欢

转载自blog.csdn.net/qlzy_5418/article/details/85337770