# 以 A[r] 的值为基准,分割数组 A 的区间 [l, r]
partition(A, l, r):
p ← l
i ← p-1
for j ← p to r-1:
if A[j] < A[r]:
i ← i+1
swap(A[i], A[j])
i ← i + 1
swap(A[i], A[r])
return i
# 分割有 N 个元素的整个数组 A 时的使用示例
q ← partition(A, 0, N-1)