归并排序 python

  1. 采用了分治法,把序列不断的等分序列,最后分成一个之后,再把它两两合并叠加起来,利用了扑克牌两个正序序列进行排序合并
  2. 时间复杂度 nlogn
  3. 代码
def merge_sort(lists):
if len(lists) <= 1:
return lists
middle = len(lists) // 2
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])
return merge(left, right)


def merge(left: list, right: list):
c = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
c.append(left[i])
i += 1
else:
c.append(right[j])
j += 1
if i == len(left):
for i in right[j:]:
c.append(i)
else:
for i in left[i:]:
c.append(i)
return c


if __name__ == '__main__':
list = [1, 5, 2, 3, 8, 9, 10, 11, 12, 14, 14, 7]
print(merge_sort(list))

 

posted @   Sardine96  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示