# 子数组合并过程
def merge(leftarr, rightarr):
result = []
i = 0
j = 0
# 合并
while(i < len(leftarr) and j < len(rightarr)):
if(leftarr[i] <= rightarr[j]):
result.append(leftarr[i])
i += 1
else:
result.append(rightarr[j])
j += 1
# 将多余的部分直接添加到result的末尾
result += leftarr[i:]
result += rightarr[j:]
return result
# 拆分数组过程
def mergeSort(arr):
n = len(arr)
# 递归拆分退出条件
if n <= 1:
return arr
mid = n // 2
leftarr = mergeSort(arr[:mid])
rightarr = mergeSort(arr[mid:])
return merge(leftarr, rightarr)
l = [23, 1, 3, 7, 99, 45, 34, 3]
res = mergeSort(l)
for i in res:
print(i)
归并排序
最新推荐文章于 2023-12-11 10:45:47 发布