Written by
nodejs-style
on
on
우선순위 큐와 힙의 차이
우선순위 큐와 힙의 차이
큐(Queue): 먼저 들어오는 데이터가 먼저 나가는 구조 (FIFO - First In First Out)
우선순위 큐(Priority Queue): 우선순위가 높은 데이터가 먼저 나가는 구조
힙(Heap): 루트 노드에 가장 큰 값 혹은 가장 작은 값을 저장하고 있는 완전이진트리
여기서, 우선순위 큐는 일반적으로 힙을 통해 구현한다.
배열, 연결리스트 등으로 구현할 수도 있지만, 최악의 경우 우선순위를 찾기 위해 인덱스의 끝까지 탐색할 수 있기 때문이다. 반면에 힙은 부모 노드, 자식 노드와의 비교만으로 노드의 자리를 찾기 때문에 훨씬 시간 복잡도가 낫다.
- 새 데이터 삽입: O(log2n)
- 데이터 삭제: O(log2n)
둘을 비슷하거나 같게 보는 경우가 있는데, 엄연히 말하면 다르다.
추상화하면 우선순위 큐는 우선순위에 따라 일차원적으로 정렬된 큐 형태로 생각되어진다.
반대로 힙은 이러한 큐의 값을 꺼낼 때마다 우선순위에 따라 정렬되어 나와지도록 돕는 이진 트리 형태이기 때문이다.
힙이 큐가 디큐(dequeue)를 할 때 보조하는 역할이라고 보면 좋을 듯하다.
from http://verycrazy.tistory.com/19 by ccl(A) rewrite - 2021-10-21 08:27:23