首先先给出Partition函数的伪代码:
partition(A,p,r) //r是数组A末尾元素的下标,
x=A[r] //分割时以A[r]为基准进行分割
i=p-1
for j = p to r-1
if A[j] <= x
i=i+1
交换A[i]与A[j]
交换A[i+1]与A[r]
return i+1
//该函数作用就是将A[p...r]分割为A[p...q-1]和A[q+1,r]两个部分,并返回下标q的值。
下面根据伪代码对其作出分析:
如上图所示,要将数组A从p到r进行分割(包含两点).这里以A[r]为基准进行分割(即x)。接下来我们移动A中的元素,将小于等于x的元素移至p到i的范围内(包含i),大于x的元素移至i+1到j的范围内(不含j)。其中i初始化为p-1,j初始化为p。<