快速排序和归并排序一样,也使用了分治思想。
最关键的步骤是分解,例如,对数组A[p..r]进行分解。划分为2个子数组A[p..q - 1]和A[q + 1..r]。A[p..q - 1]中每一个元素都小于等于A[q],A[q + 1..r]中的每一个元素都大于等于A[q]。
伪码:
1 PARTITION(A,p,r) 2 { 3 x = A[r]; 4 i = p - 1; 5 for j = p to r -1 6 if A[j] <= x 7 i = i + 1 8 exchange A[i] with A[j] 9 exchange A[i + 1] with A[r] 10 return i + 1 11 }