归并排序:
归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。
归并排序动图演示:
代码示例:
def merge_sort(alist):
"""归并排序"""
n = len(alist)
if n<=1:
return alist
mid = n//2
#采用归并排序后形成的有序的新列表
left = merge_sort(alist[0:mid])
right = merge_sort(alist[mid:])
#将两个有序的子序列合并为一个整体
#merge(left, right)
l_pointer, r_pointer = 0, 0
result =[]
while l_pointer < len(left) and r_pointer < len(right):
if left[l_pointer] <= right[r_pointer]:
result.append(left[l_pointer])
l_pointer += 1
else:
result.append(right[r_pointer])
r_pointer += 1
result.extend(left[l_pointer: