Python全系列 教程
3567个小节阅读:5930.1k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法
归并排序也是采用分治法(Divide and Conquer)的一个非常典型的应用
归并排序的定义来看,其主要是归并操作,而归并操作的前提是两个已经排序的序列,所以首先需要将一个序列划分一个个有序的的序列,然后再进行归并。 它的核心思想是:先分后归(先拆分为一个个有序的子序列,再将一个个有序子序列进行归并操作最后合并为一个有序的序列)
xxxxxxxxxx
def merge_sort(lists):
# 如果要需要归并排序的列表长度少于1,无法分割,直接返回
if len(lists) <=1:
return lists
# 设置要分割的索引
num = int(len(lists) / 2)
# 分割
left = merge_sort(lists[:num])
right = merge_sort(lists[num:])
# 合并left+ right
return merge(left,right)
def merge(left,right):
rs = []
l,r = 0,0
# 判断是否有需要根据排序添加数据
while l<len(left) and r<len(right):
# 从小到大排序,谁小谁加到rs里
if left[l] <= right[r]:
rs.append(left[l])
# 向后挪一个索引
l += 1
else:
rs.append(right[r])
r += 1
# 拼接上剩余没有比较的元素
rs += list(left[l:])
rs += list(right[r:])
return rs
if __name__ =='__main__':
nums = [5,2,6,4,7,3,1]
tmp = merge_sort(nums)
print(tmp)