大きな数字セットを外部でソートする必要があるとします。ポリフェーズマージソート - フェーズの数は何ですか?
- 4本のテープ:2本の入力テープ、2出力
- 3本のテープ:2、1アウト
ケース1:
我々は2例を調べたいですk
の実行から始めて、それらの実行を2つの入力テープ(下の写真の左側)にコピーし、入力テープから2つの異なる実行を取る各繰り返しをマージします(そしてソート)し、1回の反復では最初の出力テープに保存し、次の反復では2番目のテープに保存します。次に出力テープを入力テープで切り替えて、手順を繰り返します。だから我々が持っているとすれば、n=10^6
要素とk=1000
が実行された後、最初の段階の実行後には、2000
、3番目の後に4000
などとなります。したがって、相の総数はceil(log_2(n))
です。
ケース2:最良の複雑さに
は、フェーズ数がposition of Fibonacci’s number in the Fibonacci’s sequence minus two
である、すなわち実行の我々の最初の数はk=34
および34は、フィボナッチ数列における第九の数である場合には、それから7つのフェーズがあります。
しかし...実行の私達の数はフィボナッチ数でない場合、それはありません取得するためにダミーの実行とテープパッドに必要です。フィボナッチ数までのランの
は最後に、私の質問は:実行の数がフィボナッチ数でない場合、シーケンスをソートするために必要な相の平均の場合の数は何である
?
私の質問に記載されている4テープ方法は、**平衡** 2方向マージソートと呼ばれ、http://bluehawk.monmouth.edu/rclayton/web-pages/s06-503/esort.html – SantaXL
@ SantaXL - 私はこれに注意するために私の答えを更新しました。私は、4つのテープの例が均衡マージソートまたは多相マージソートを示すはずかどうかはわかりませんでした。ポリフェーズマージソートは8テープ未満で高速ですが、バランスマージソートは8以上のテープで高速です。 – rcgldr