归并排序
运作:
1.将一个序列从中间位置分成两个序列;
2.在将这两个子序列按照第一步继续二分下去;
3.直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。
代码实现
def merge_sort(lis):
# 递归结果条件
if len(lis)<=1:
return lis
# 分治进行递归
mid=len(lis)//2
left=merge_sort(lis[:mid])
right=merge_sort(lis[mid:])
# 将两个有序组进行合并
result=[]
i=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后面
if i==len(left):
result.extend(right[j:])
else:
result.extend(left[i:])
return result
a=[2,6,7,5,3,8,4]
print(merge_sort(a))
数据结构# 处理结果
‘’’
[2, 3, 4, 5, 6, 7, 8]
‘’’