Хорошо, скажем, у меня есть текстовый файл (не обязательно содержащий все возможные символы), и я хотел бы рассчитать частоту каждого символа, а после вычисления частоты мне нужно получить доступ к каждому символу и его частоте. от самого частого к наименее частому. Символы не обязательно являются символами 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)
Мне было интересно: есть ли лучший, более простой способ вычислить и сохранить, сколько раз каждый символ встречается в файле?