#配列Aの区間[l, r]をA[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
# 配列Aの全体を分割する場合の使用例
q ← partition(A, 0, N-1)