在这个例子中,为什么Hoare分区算法没有返回正确的枢轴索引位置?

时间:2016-07-18 10:35:05

标签: algorithm sorting quicksort partitioning

假设我有以下数组:

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。

0 个答案:

没有答案