def merge(left,right):
result = []
i = 0;j = 0
while i < len(left) and j < len(right):
#左右比较确定添加到result的顺序
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
#将剩余部分添加,继续下一次循环
result += left[i:]
result += right[j:]
#print(result) #调试查看用
return result
def merge_sorts(input_list):
length = len(input_list)
if length <= 1:
return input_list
# 按照平分当前列表的方式将data递归分为很多个平均的列表
mid = length // 2
left = merge_sorts(input_list[:mid])
right = merge_sorts(input_list[mid:])
# 递归分到每个列表只有一个数字后合并
# print(left) #调试查看用
# print(right) #调试查看用
return merge(left, right)
if __name__ == '__main__':
input=[9,10,24,7,2,33,8,5]
b=merge_sorts(input)
print(b)
运行结果:
[2, 5, 7, 8, 9, 10, 24, 33]
归并排序----python
最新推荐文章于 2025-07-08 13:49:09 发布