在 cormen 中给出的 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
swap( A[i], A[j] )
else
return j
在快速排序中使用它时,以 {1,3,9,8,2,7,5} 作为输入,在第一个分区获得 {1,3,5,2,8,7,9} 之后,这是不正确的因为,所有小于枢轴的元素(这里是 5 )都应该在左侧。有人可以指出我缺少什么吗?