'''
归并排序,假设初始序列含有n个记录,可以看成是n个有序的子序列,每个子序列的长度为1,
然后两两归并,得到[n/2](不小于n/2的最小整数)个长度为2或1的有序子序列,再两两归并,
如此重复,直到得到一个长度为n的有序序列为止,这样的排序方法称为2路归并排序
'''
def MSort(list):
if len(list)==1:
# print(list)
return list
mid = len(list)//2
# print(mid)
left = list[:mid]
right = list[mid:]
result_l = MSort(left)
result_r = MSort(right)
# print(result_l)
return Merge_Sort(result_l,result_r)
def Merge_Sort(left,right):
result=[]
print(left,right)
while len(left)>0 and len(right)>0:
if left[0]<right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
result+=left
result+=right
return result
python--归并排序
最新推荐文章于 2024-01-08 19:30:21 发布