#用 递归去实现程序
def merge_sort(alist):
n = len(alist)
if n <= 1:
return alist
mid = n // 2
#进行拆分的阶段 也就是嵌套递归阶段
#left采用归并排序后形成的新的有序列表
left_li = merge_sort(alist[:mid])
#right采用归并排序后形成的新的有序列表
right_li = merge_sort(alist[mid:])
#归并排序的合并阶段:将两个有序的序列合并成为新的有序序列
left_pointer,right_pointer = 0,0
result = []
while left_pointer < len(left_li) and right_pointer < len(right_li):
if left_li[left_pointer] < right_li[right_pointer]:
result.append(left_li[left_pointer])
left_pointer += 1
else:
result.append(right_li[right_pointer])
right_pointer += 1
result += left_li[left_pointer:]
result += right_li[right_pointer:]
return result
if __name__ == "__main__":
list = [54,26,93,17,77,31,44,55,20]
print(list)
li=merge_sort(list)
print(list)
print(li)
C:\Users\zhaoyuan\Anaconda3\envs\pytorch_cpu\python.exe C:/Users/zhaoyuan/PycharmProjects/untitled/数据结构与算法/归并排序.py
[54, 26, 93, 17, 77, 31, 44, 55, 20]
[54, 26, 93, 17, 77, 31, 44, 55, 20]
[17, 20, 26, 31, 44, 54, 55, 77, 93]
归并排序python实现
最新推荐文章于 2024-07-19 17:03:11 发布