归并排序的算法过程运用的是分治法的思想,先将数组不断划分为2个,然后依次向上合并,用Python写起来简单很多。
需要注意的是归并排序需要借助额外的空间。
# merge sort
# 归并排序
def merge_sort(lst):
if len(lst) <= 1:
return lst
middle = int(len(lst)/2)
left = merge_sort(lst[:middle])
right = merge_sort(lst[middle:])
merged = []
while left and right:
merged.append(left.pop(0) if left[0] <= right[0] else right.pop(0))
merged.extend(right if right else left)
return merged
data_lst = [6, 202, 100, 301, 38, 8, 1]
print(merge_sort(data_lst))