算法导论-快排
def quicksort(A,p,r):
if p <r:
n = partion(A,p,r)#n是基准点,A[p...n-1]<=A[n]<=A[n+1...r]
#拆分为2个重复的子问题
quicksort(A,p,n-1)
quicksort(A,n+1,r)
def partion(A,p,r):
x = A[r]
i=p-1 # i表示小于x的序列的迭代器,最终的序列形态为A[p...n-1]
j=p # j表示大于x的序列的迭代器, 最终的序列形态为A[n+1...r]
for j in range(p,r,1):
if x >= A[j]: #升序排列
#if x <= A[j] #降序排列
i=i+1
swap(A,i,j)
swap(A,i+1,r)
return i+1
def swap(A,i,j):
t= A[i]
A[i] =A[j]
A[j]=t
list=[3,6,2,7,1,9,4]
quicksort(list,0,len(list)-1) #输出结果:[1, 2, 3, 4, 6, 7, 9]
print(list)