参考:https://blog.csdn.net/qq_36813467/article/details/88848415
归并排序思想
代码
def gb_sorted(s1, s2, s): # 将s1和s2合并为s,s为原始列表
i = 0 # s1初始指针位置
j = 0 # s2初始指针位置
while i + j < len(s):
# s2走完 或者 s1没走完但是s1[i]小于s2[j]
if j == len(s2) or (i < len(s1) and s1[i] < s2[j]):
s[i + j] = s1[i]
i += 1
else:
s[i + j] = s2[j]
j += 1
def gb(sss):
"""归并排序"""
n = len(sss)
if n < 2:
return
# 拆分
mid = n // 2
s1 = sss[0:mid]
s2 = sss[mid:n]
gb(s1)
gb(s2)
# 合并
gb_sorted(s1, s2, sss)
ss = [8, 4, 5, 7, 1, 3, 6, 2]
print(f'排序前:{ss}')
gb(ss)
print(f'排序后:{ss}')
结果