1 行に 1 単語の単語を含むファイルを考えてみましょうN
。ファイルが大きすぎるため、ファイル全体を一度にメモリに読み込むことができません。
私の答え:ファイルを.So
に分割します各チャンクのサイズ一度に
1つのチャンクをメモリに読み込み、ソートしてファイルに書き戻します.すべてのkチャンクをソートします.
を実行します。
合計時間の複雑さを分析します。どうすればできますか?
各チャンクのソートにかかる時間 = (クイックソートを使用すると仮定)
k 個のチャンクをマージする時間 = (それは??)
したがって、総時間の複雑さ =
時間の複雑さを分析する週k chunks
x = N/k
k way merge
xlogx
klogk
??