def merge(left, right):
i, j = 0, 0
result = []
# 将两个序列按升序合并
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result # 结果按升序排列
def merge_sort(seq):
"""归并排序"""
if len(seq) <= 1:
return seq
# 将序列二分为两部分
mid = len(seq) // 2
left = seq[:mid]
right = seq[mid:]
lseq = merge_sort(left)
rseq = merge_sort(right)
return merge(lseq, rseq)
seq_list = [37, 19, 43, 22, 57, 89, 26, 92]
new_seq = merge_sort(seq_list)
print(new_seq)
# [19, 22, 26, 37, 43, 57, 89, 92]
算法之归并排序(Python)
最新推荐文章于 2023-01-12 13:20:53 发布