归并排序 python
- 采用了分治法,把序列不断的等分序列,最后分成一个之后,再把它两两合并叠加起来,利用了扑克牌两个正序序列进行排序合并
- 时间复杂度 nlogn
- 代码
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))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!