Есть ли лучший способ вычислить частоту всех символов в файле?

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

Мне было интересно: есть ли лучший и простой способ вычислить и сохранить, сколько раз каждый символ встречается в файле?

6
задан rps 4 October 2011 в 19:02
поделиться