0

Bentley-Mcilroyによって設計された3方向のパーティショニングアルゴリズムがあります。これは、次のように実行されます(最初の要素に基づいてパーティショニングします。最初はi = p = 0およびj = q = n-1):

Scan i from left to right so long as a[i] < a[lo].
Scan j from right to left so long as a[j] > a[lo].
Exchange a[i] with a[j].
If a[i] == a[lo], exchange a[i] with a[p] and increment p.
If a[j] == a[lo], exchange a[j] with a[q] and decrement q.

これは。まで続きi <= jます。これが壊れたら、

Scan j and p from right to left and exchange a[j] with a[p].
Scan i and q from left to right and exchange a[i] with a[q].

ここで、最初の要素について分割する代わりに、整数などの外部要素に基づいて分割できるように変更しますpivotpivot配列内の要素の1つと同じである可能性があり、最初の要素である可能性があります) 1つも!)。これどうやってするの?p0ではなく-1に設定してみましたが、動作しませんでした。

4

1 に答える 1

1

a[lo]へのすべての参照をに置き換える必要がありますpivot

于 2012-10-05T19:19:33.367 に答える