I am working on this question。私の関数プロトタイプはrightPosへのI(rightPos-leftPos)/ 2 + leftPosにleftPosを知っている関数の2番目の部分で2つの配列が順番に並んでいる場合、どのような場所に並べ替えますか?
static void Sort(byte[] arr, int leftPos, int rightPos)
であり、(rightPos-leftPos)/ 2を順にソートされています。
私は、どのようにして2つの部品が整っているかを知っている場所でソートを行うことができると考えました。私は何も考えることができませんでした。私はmerge sortのマージ機能を見ましたが、代わりに出力配列を使用しています。
どのようにして、両方のスライスが順番になっていることを知っていますか?
注:私は一時的なメモリとして使用するメイン配列と同じ長さである余分な配列を渡すことができると思っていたが、私はそれぞれのマージ後にArray.Copyを行う必要があると思った方法。
btwとは何ですか? rotate ....これを見て、2番目の配列を使い、array.copyを使ったほうがいいと思われます。 (私が気づいているのは、上下限と下限です) –
@acid私は[source](http://thomas.baudel.name/Visualisation/VisuTri/inplacestablesort.html)を引用しました。これらの関数を定義します。私は同意します - 物事を維持するためのオーバーヘッドを追加しているので、その努力の価値があることはまずありません。私はあなたにそれが必要であればできることを示していました。 – marcog