原书伪代码翻译为python:
def quick_sort(a, p, r):
if p < r:
q = partition(a,p, r)
#递归逐渐分割
quick_sort(array, p, q - 1)
quick_sort(array, q + 1, r)
def partition(a, p, r):
x = a[r] #将最后一个元素设置为key值
i = p - 1 #减去1方便计数
for j in range(p, r): #从低到高找比key值小的
if a[j] <= x:
i =i + 1 #对小于key值的数计数
a[i], a[j] = a[j], a[i] #把小于key值的往前面放
a[i + 1], a[r] = a[r], a[i+1] #把比key大的第一个数和key值交换,这样key值就在中间了,左边是比key值小的,右边是比key值大的
return i + 1 #最后划分出长度为i+1的列表区域