data = [45,3,2,6,3,78,5,44,22,65,46]
# 合并函数,将相邻的两个区间合并为一个
def merge(a, b):
result = []
i = j = 0
while i<len(a) and j<len(b):
if a[i] < b[j]:
result.append(a[i])
i += 1
else:
result.append(b[j])
j += 1
result += a[i:]
result += b[j:]
return result
def sorts(data):
length = len(data)
if length <=1:
return data
# 按照平分当前列表的方式将data递归分为很多个平均的列表
mid = length/2
a = sorts(data[:mid])
b = sorts(data[mid:])
# 递归分到每个列表只有一个数字后合并
return merge(a, b)
print sorts(data)
归并排序python实现
最新推荐文章于 2024-05-01 01:24:14 发布