分治排序算法,平均时间复杂度nlogn
import random
import sys
#sys.setrecursionlimit(9)
A=[x for x in range(10000)]
random.shuffle(A)
def merge(A,p,q,r):
n1 = q - p
n2 = r - q
L = A[p:q+1]
R = A[q+1:r+1]
L.append(65535)
R.append(65535)
i=0
j=0
for k in range(p,r+1):
if L[i]<=R[j]:
A[k] = L[i]
i = i+1
else:
A[k] = R[j]
j = j+1
def merge_sort(A,p,r):
if p<r:
q = (p+r) / 2
print q
merge_sort(A,p,q)
merge_sort(A,q+1,r)
merge(A,p,q,r)
else:
return True
merge_sort(A,0,len(A)-1)
print A