私は Dikstra パーティショニング アルゴリズムを調査してきました。以下は私の与えられたものです:
R = Red
W = White
B = Blue
このパーティション化されていない配列があります。
| W | B | R | W | R | W | B | W | W |
R、W、Bの連続した形式でパーティションを分割したい。
| R | ? | W | B |
0 i j k n
与えられた:
i = 0
j = n
k = n
n = number of elements
以下は私のアルゴリズムです:
while (i < j)
{
case a[i]:
R : i++;
W : j--; swap(a[i], a[j]);
B : j--; k--; swap(a[i], a[k]); swap(a[i], a[j]);
end case
}
//Done Sorting
出力は次のようになります。
| R | R | W | W | W | W | W | B | B |
私の質問は次のとおりです。
- スワップの回数を減らすことはできますか? はいの場合、どのように?
- 分割する色が 4 つある場合、アルゴリズムは適用できますか?
ありがとうございました。私は本当にこの概念を理解する必要があります。