좋아요, 그렇다면 가능한 모든 기호가 포함되지 않은 텍스트 파일이 있고 각 기호의 빈도를 계산하고 빈도를 계산 한 후 각 기호와 해당 빈도에 액세스해야한다고 가정하십시오. 가장 빈번한 빈번한 빈번한. 기호는 반드시 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)
궁금 : 각 기호 파일에서 발생하는 횟수를 더 나은, 더 간단한 계산하는 방법 및 저장이 나는 (의사)에이 같은 일을 고려하고
?
O (1) 빈도 검색을 제공하지만 가장 자주 자주 사용하는 결과가없는 해시 맵 또는 검색 트리/힙을 사용하여 O (lg n) 삽입 및 검색을 수행하지만 최소 빈도로) 결과. –
힙에서 임의의 노드를 찾는 것이 다소 비용이 많이 들기 때문에 바이너리 힙이 특히 좋은 데이터 구조는 아닙니다. 다른 사람이 지적했듯이 이진 트리 나 해시 테이블을 사용하는 것이 좋습니다. –