归并排序:
#_*_coding: utf-8 _*_:
import random
def Mergesort(str):
if len(str) <= 1: #子序列
return str
mid = (len(str) // 2)
#递归的切片操作
left = Mergesort(str[:mid])
right = Mergesort(str[mid:len(str)])
result = []
while len(left) > 0 and len(right) > 0:
if (left[0] <= right[0]):
result.append(left.pop(0))
else:
result.append(right.pop(0))
if (len(left) > 0):
result.extend(Mergesort(left))
else:
result.extend(Mergesort(right))
return result
if __name__ == '__main__':
a = [1,3,2]
print (Mergesort(a))
[1, 2, 3]
时间复杂度:nlgn