さて、テキストファイル(必ずしもすべての可能な記号が含まれているとは限りません)があり、各記号の頻度を計算したいとします。頻度を計算した後、各記号とその頻度に最も頻繁にアクセスする必要があります。最も頻度が低い。シンボルは必ずしもASCII文字である必要はなく、すべて同じ長さであっても、任意のバイトシーケンスである可能性があります。
私はこのようなことを(擬似コードで)行うことを検討していました:
function add_to_heap (symbol)
freq = heap.find(symbol).frequency
if (freq.exists? == true)
freq++
else
symbol.freq = 1
heap.insert(symbol)
MaxBinaryHeap heap
while somefile != EOF
symbol = read_byte(somefile)
heap.add_to_heap(symbol)
heap.sort_by_frequency()
while heap.root != empty
root = heap.extract_root()
do_stuff(root)
私は疑問に思っていました:各シンボルがファイルに出現する回数を計算して保存するためのより良い、より簡単な方法はありますか?