[これはインタビューの質問です。重複が見つかりませんでした。]
配列には、2つのサブソートされた配列が含まれます。2つのサブ配列をソートするためのインプレースアルゴリズムを提供します。
例:I / P:1 4 5 7 8 9 2 3 6 10 11 O / P:1 2 3 4 5 6 7 8 9 10 11
インプレースマージソート、挿入ソート(サブ配列はすでにソートされているため)、およびクイックソートの観点から考えましたが、標準のソート方法を使用するよりも複雑なソリューションを考えることはできませんでした。
ソートされたサブ配列プロパティを活用して、入力でクイックソートを実行するよりも時間計算量を増やすことができるアルゴリズムを見つけるのを手伝ってください。
これは、次の例を使用して、私が考えたマージソートシミュレーションです。
1) For position 0, Comparing 1 & 2, 1 is smaller let it stay at it's original place
2) For position 1, Comparing 2 & 4, 2 is smaller so swap 2 and 4
3) For position 2, Comparison now is between 4 and 3 (5 > 4 anyways) swap 3 and 5
4) For position 3, Comparison between 4 & 5, swap 4 and 7
5) For position 4, Comparison between 7 & 5, swap 8 and 5
6) For position 5, Comparison between 7 & 8 (OUCH!!) it should have been between 7 & 6
この問題は、インプレースマージが複雑すぎる行列の並べ替えられた行の並べ替えに似ているようです。