#归并排序的思想就是先递归分解数组,再合并数组。
#合并思路是比较数组的最前面的数,谁小就先取谁,
#取了后,指针相应的往后移动一位,然后再比较,直到一个数组为空,最后把另一个数组
#剩余的部分复制过来即可
import math
#递归分解
def merge_sort(li):
if len(li) <=1:
return li
num = math.floor(len(li)/2)
left = merge_sort(li[:num])
right = merge_sort(li[num:])
return merge(left,right)
def merge(left,right):
l,r =0,0
result = []
while l
if left[l] < right[r]:
result.append(left[l])
l +=1
else:
result.append(right[r])
r +=1
result += left[l:]
result += right[r:]
print(result)
return result
alist = [54,26,93,17,77,31,44,55,20]
sorted_alist = merge_sort(alist)
print(sorted_alist)
网友评论