归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
#coding:utf-8
def mergeSort(lis):
if len(lis) < 2:
return lis
length = int(len(lis) >> 1)
leftLis = mergeSort(lis[:length])
rightLis = mergeSort(lis[length:])
return merge(leftLis, rightLis)
def merge(left, right):
r, l = 0, 0
res = []
while l < len(left) and r < len(right):
if left[l] < right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
res += left[l:]
res += right[r:]
return res
lis = [2, 4, 7, 8, 9, 6, 11, 2, 5]
print(lis)
print('============================')
print(mergeSort(lis))