排序算法----python实现归并排序

#归并排序
def merge_sort(alist):
    n=len(alist)
    if n<=1:
        return
    mid=n/2
    #采用归并排序后形成的有序列表
    left_li=merge_sort(alist[:mid])
    right_li= merge_sort(alist[mid:])
    #拆分功能
    #将两个子序列合成一个新的序列
    #merge(lefe,right)
    left_pointer,right_pointer=0,0
    result=[]
    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
if __name__ == '__main__':
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    sorted_li=merge_sort(li)
    print(li)
    print(sorted_li)

猜你喜欢

转载自blog.csdn.net/liuxiaobao666/article/details/114713428