PARTITION(A,r)
x ← A[r]
i ← p - 1
for j ← p to r - 1
do if A[j] ≤ x
then i ← i + 1
swap(A[i],A[j])
swap(A[i + 1],A[r])
return i + 1
QUICKSORT(A,r)
if p < r
then q ← PARTITION(A,r)
QUICKSORT(A,q - 1)
QUICKSORT(A,q + 1,r)
实现:
#!/usr/bin/python
import sys
def partion(array,r):
x = array[r]
i = p - 1
for j in range(p,r):
if (array[j] < x):
i+=1
array[j],array[i] = array[i],array[j]
i+=1
array[i],array[r] = array[r],array[i]
return i
def quick_sort(array,r):
if p < r:
q = partion(array,r)
quick_sort(array,q - 1)
quick_sort(array,r)
if __name__ == "__main__":
array = [1,3,5,23,64,7,6,34,98,100,9]
quick_sort(array,len(array) - 1)
for a in array:
sys.stdout.write("%d " % a)