多くの文字列のファイルがあるとします。文字列を辞書順に並べる方法は?可変長の文章の大きなファイルをソートする方法は?
詳細:
- ファイルサイズが約32ギガバイト ytesです。
- 各行はスペースで区切られた可変数の単語を含む1つの文とみなすことができます。つまり、各行の長さは固定されません。
- 各単語にはASCII文字のみが含まれています。
- 私はただ持っています8 GBメモリのytesしかし無限のディスクスペース。
私が知ることができるのは、外部マージソートです。この特定の問題の良いアイデアはありますか?
外部マージソートは、かなり良いオプションのように聞こえます。最初の文字に応じてファイルを分割することも考えてみましょう。まず分割ヒストグラムを作成し、結果の各サブファイルをソートして連結します。 (実際には、サブファイルを作成するか、大きな32GBファイルを別々に通過させてそれぞれを生成してもよいでしょう) –
' outfile'よりもうまくいくのは難しいでしょう。 GNU 'sort'(Windows版も可能)は、必要に応じて効率的なマルチパスマージを使って、メモリよりはるかに大きなファイルを自動的に処理します。 –