算法--归并排序
2021-01-22 22:15
标签:ngx 结束 ddl 算法 code tps class ret 循环 博客:https://www.cnblogs.com/chengxiao/p/6194356.html https://www.cnblogs.com/piperck/p/6030122.html python实现: 算法--归并排序 标签:ngx 结束 ddl 算法 code tps class ret 循环 原文地址:https://www.cnblogs.com/zhzhlong/p/12886067.htmldef merge(left, right): """
params: left=[1,2,4] right=[3,6,7]
h=j=0: 初始化索引
循环结束后,判断:如果左边的循环完了, 把右边剩下的循环插入结果集c (j=3 len=3; h=1 len=3)或者else。。。。
"""
c = []
h = j = 0
while j and h len(right):
if left[j] right[h]:
c.append(left[j])
j += 1
else:
c.append(right[h])
h += 1
if j == len(left):
for i in right[h:]:
c.append(i)
else:
for i in left[j:]:
c.append(i)
return c
def merge_sort(li):
"""
step1: 如果len=1,不用排序了,或者说已经排好了
step2: 递归拆分
step3: 合并
"""
if len(li) :
return li
middle = len(li) // 2
left = merge_sort(li[:middle])
right = merge_sort(li[middle:])
return merge(left, right)
if __name__ == ‘__main__‘:
a = [4, 7, 8, 3, 5, 9]
print(merge_sort(a))