これが以前に繰り返された場合は申し訳ありませんが、選択した文言の投稿は見つかりませんでした. 面接の準備をしていて、外部選別について読んでいます。たとえば、32 ビット整数の複数のハード ディスクを並べ替えたい場合は、カウント ソートを行い、64 ビット カウンターを使用して 32 ビット整数をカウントできます。次に、考えられるすべての 32 ビット整数値で、それを表すカウンターがあります。O(1) 時間の代わりに O(nlogn) 時間をかけて、同様のことを行うために外部マージソートを使用することもできます。ただし、おそらく非常に一般的なケースについて考えていましたが、それを行うための最良の方法が思い浮かびません。おそらく多くのハードディスクにまたがるソートされたファイルの束に新しいデータを追加することです。
データがメモリ内にある場合、ヒープ (プライオリティ キュー) を使用して、ログイン時にこの挿入を実行できます。ただし、ハードディスク領域からヒープを作成することはできません。リストでは、O(logn) 検索を使用してデータの場所を見つけ (バイナリ検索の場合は並べ替え)、残りのデータを前後にバンプするか、実装によっては何もシフトする必要がない場合があります。コンテナ (配列、リンクされたリストなど) の。ただし、ハードディスクの世界では、読み取りと書き込みは RAM よりもはるかにコストがかかるため、データをどこかに挿入してから残りのデータをシフト (再書き込み) すると、法外にコストがかかるように見えます。あなたの誰かが私に勧めることができるこれのためのテクニックはありますか? 私は自分自身を読んで喜んでいます.情報を見つけるために私の質問を表現する正しい方法を見つけることができませんでした. ありがとうございました!