1.把长度为n的输入序列分成两个长度为n/2的子序列;
2.对这两个子序列分别采用归并排序;
3.将两个排序好的子序列合并成一个最终的排序序列。
def merge_sort(lists):
if len(lists)<=1 :
return lists
mid = len(lists)//2
left = merge_sort(lists[:mid])
right = merge_sort(lists[mid+1:])
return merge(left,right)
def merge(a,b):
c = []
h = j = 0
while j<len(a) and h<len(b):
if a[j]<b[h] :
c.append(a[j])
j+=1
else:
c.append(b[h])
h+=1
if j == len(a):
for i in b[h:]:
c.append(i)
else:
for j in a[j:]:
c.append(j)
return c
if __name__ == '__main__':
list1 = [14, 2, 34, 43, 21, 19]
print(merge_sort(list1))