Nウェイマージのアルゴリズム
質問
2ウェイマージはMergesortアルゴリズムの一部として広く研究されています。 しかし、私はNウェイマージを実行することができる最良の方法を見つけることに興味があるのですか?
例えば、私が
N
ファイルがあり、それぞれ 100 万個の整数がソートされています。
それらを 1 億個のソートされた整数を持つ 1 つのファイルにマージする必要があります。
この問題のユースケースは、実際にはディスクベースの外部ソートであることに留意してください。したがって、実際のシナリオでは、メモリの制限もあります。したがって、一度に 2 つのファイルをマージする (99 回) という単純なアプローチではうまくいきません。各配列で利用可能なメモリの小さなスライディング ウィンドウしかないとします。
この N ウェイ マージに対する標準的なソリューションがすでに存在するかどうかはわかりません。 (ググってもあまりわかりませんでした) .
しかし、もし良いn-wayマージアルゴリズムがあれば、algo/linkを投稿してください。
時間の複雑さ。
ファイル数を大幅に増やすと (
N
)を大幅に増やした場合、アルゴリズムの時間的複雑性にどのような影響を与えるでしょうか?
ご回答ありがとうございます。
どこにも聞かれたことはないのですが、これは面白いインタビューの質問になりそうな気がしました。そのためタグ付けしました。
どのように解決するのですか?
次のように考えてはどうでしょうか。
-
優先キューを作成する
-
各ファイルの繰り返し処理
f
-
ペアをキューに入れる
(nextNumberIn(f), f)
最初の値を優先キーとして
-
ペアをキューに入れる
(nextNumberIn(f), f)
最初の値を優先キーとして
-
キューが空でない間
- キューを削除する (m, f) 待ち行列の
- 出力 m
-
もし
f
枯渇していない
- 待ち行列 (nextNumberIn(f), f)
優先キューへの要素の追加は対数時間で行えるので、項目 2 は O(N × log N) . whileループの(ほとんどすべての)反復は要素を追加するので、whileループ全体は O(M × log N) ここで M はソートする数値の総数です。
すべてのファイルが空でない数字の並びを持っていると仮定すると、次のようになります。 M > N となり、したがって、アルゴリズム全体は O(M × log N) .
関連
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] 2 つの Git リポジトリをマージする方法は?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] Git で特定のコミットをマージする方法
-
[解決済み] git merge` で `--no-ff` フラグはどのような効果がありますか?
-
[解決済み] 40 億の整数以外の整数を生成する。
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】JavaScriptで2つの配列を結合し、項目の重複を排除する方法
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] キャッシュの無効化 - 一般的な解決策はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜO(n)はO( nlog(n) )よりも優れているのでしょうか?)
-
[解決済み] 簡単:T(n)=T(n-1)+nを反復法で解く。
-
[解決済み] 決定論的クイックソートとは何ですか?
-
[解決済み] グラフが半連結であるか否かを判定する
-
[解決済み】.Netのプライオリティキュー【終了しました
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[クローズド]
-
[解決済み] スペルチェッカーで候補を出すアルゴリズムとは?
-
[解決済み] トライ式と基幹トライ式のデータ構造の違いは何ですか?
-
[解決済み] luceneはどのように文書をインデックスするのですか?
-
[解決済み] 20問のAIアルゴリズムはどのように機能するのか?