次の問題を考えてみましょう。
赤または青の2つのクラスに属する要素の配列が与えられます。すべての青い要素が最初に来るように(そしてすべての赤い要素が後に続くように)、配列の要素を再配置する必要があります。再配置は安定した方法で行う必要があります。つまり、青い要素の相対的な順序を維持する必要があります(赤い要素でも同じです)。
上記の再配置をインプレースで実行する巧妙なアルゴリズムはありますか?
もちろん、インプレースではないソリューションは簡単です。
明らかなインプレースソリューションは、安定したソートアルゴリズムをアレイに適用することです。ただし、配列で本格的な並べ替えアルゴリズムを使用することは、特に2つのクラスの要素しか扱っていないという事実を考慮すると、直感的にやり過ぎのように感じます。
どんなアイデアでも大歓迎です。