归并排序
顾名思义就是先将待排列数据进行拆分在合并。时间复杂度为O(nlogn)
def merge_sort(num):
if len(num)<=1:
return num
mid=len(num)//2
llist,rlist=merge_sort(num[:mid]),merge_sort(num[mid:]) #拆分
i,j=0,0
result=[]
while i<len(llist) and j<len(rlist): #合并
if llist[i]<rlist[j]:
result.append(llist[i])
i+=1
else:
result.append(rlist[j])
j+=1
result+=llist[i:]+rlist[j:] #防止在合并的时候落掉某些元素
return result