假设我有以下数组:
3, 6, 9, 1, 4
我想使用Hoare算法在枢轴周围进行分区:
Hoare-Partition (A, p, r)
x ← A[p]
i ← p − 1
j ← r + 1
while TRUE
repeat j ← j − 1
until A[j] ≤ x
repeat i ← i + 1
until A[i] ≥ x
if i < j
exchange A[i] ↔ A[j]
else return j
我选择了中间的数字(9)作为支点。 以下是逐步应用的算法:
3, 6, 9, 1, 4
i j //increase i, decrease j
3, 6, 9, 1, 4
i j //exchange 4 and 9
3, 6, 4, 1, 9
i j //increase i, decrease j
3, 6, 4, 1, 9
j i //i > j, stop
数组在pivot周围正确分区,但是,返回的数据索引值是3,而我预计它是4。