"""
归并排序
"""
def mergeSort(L,l,r):
"""
归并排序
时间复杂度O(N*logN)
额外空间复杂度O(N)
"""
if r==l:
return
mid = int(l+(r-l)/2)
mergeSort(L,l,mid)
mergeSort(L,mid+1,r)
merge(L,l,mid,r)
def merge(L,l,mid,r):
help_ = [0] * (r-l+1)
p1 = l
p2 = mid + 1
i = 0
while p1 <= mid and p2 <= r:
if L[p1] > L[p2]:
help_[i] = L[p2]
i +=1
p2 +=1
else:
help_[i] = L[p1]
i +=1
p1 +=1
while p1 <= mid:
help_[i] = L[p1]
p1 +=1
i +=1
while p2 <= r:
help_[i] = L[p2]
p2 +=1
i +=1
for i in range(len(help_)):
L[l+i] = help_[i]
L = [1,3,5,4,2,6,8,9,10,0]
mergeSort(L,0,5)