0

Algorithm for N-way merge で提案されているソリューションの 1 つについて質問があります。

メンバー aioobe が提案したソリューションは次のとおりです。

1. Create a priority queue

2. Iterate through each file f
    enqueue the pair (nextNumberIn(f), f) using the first value as priority key

3. While queue not empty
    1. dequeue head (m, f) of queue
    2. output m
    3. if f not depleted
        1. enqueue (nextNumberIn(f), f)

ステップ 2 と 3 が完全に理解できませんでした。ステップ 2 では、すべてのファイルの内容を優先キューに読み込む必要がありますか? その場合、メモリは問題になりませんか?

ステップ 3 で、3.3 を理解できませんでした (f が枯渇していない場合はキューに入れます)。誰かまたはOP(aioobe)がここでこれを理解するのを手伝ってくれませんか。どうもありがとう。

4

1 に答える 1

1

ステップ 2 では、各ファイルから最初の番号のみを読み取ります。大量のファイルまたは非常に多数のファイルがない限り、メモリの問題にはなりません。

ステップ 3.3 は、m の元となった同じファイル内の m の次の番号を読み取ります。

于 2013-06-02T05:33:25.173 に答える