「Programming Pearls」を読んでいましたが、解決策の説明の 1 つで本当に混乱しています。
質問は次のとおりです。「最大 n 個の正の整数を含むファイルで、それぞれが n 未満で、n = 10^7 です。各正の整数は最大 10 回出現する可能性があります。ファイルをどのように並べ替えますか?」
本で与えられた解決策: "各整数が最大 10 回出現する場合、4 ビットのハーフバイトでその出現を数えることができます。問題 5 (下記) の解決策を使用して、完全なファイルを 1 回のパスで並べ替えることができます。 10,000,000/2 バイト、または 10,000,000/2k バイトの k パス」
問題 5の解決策: 2 パス アルゴリズムは、最初に 5,000,000/8 = 625,000 ワードのストレージを使用して整数 0 ~ 4,999,999 を並べ替え、次に 2 番目のパスで 5,000,000 ~ 9,999,999 を並べ替えます。k-pass アルゴリズムは、時間 kn および空間 n/k で n 未満の最大 n 個の繰り返されない正の整数をソートします。)
著者がどのようにして 10,000,000/2k のスペースをソートするのかわかりません。つまり、問題 5 の解決策に基づいて、最初のパスでソートするために 625K バイトのスペースと、カウントを格納するために整数ごとに追加の 1/2 バイトが必要ですよね?
誰かがこれを理解するのを手伝ってくれませんか?
どうもありがとう。