우선순위 큐(Priority Queue)는 요소들을 우선순위에 따라 저장하고 접근하는 자료구조이다.
우선순위 큐(Priority Queue)는 <queue> 헤더에 있는 std::priority_queue 클래스를 사용 할 수 있다.
여느 때와 같이 queue 사용법과 거의 비슷하다.
삽입 한 요소는 container 내부적으로 우선순위에 따라 정렬 됨.
#include <queue>
std::priority_queue<int> pq
pq.push(10); // push() 함수 : 우선순위 큐에 요소를 추가
pq.push(5);
pq.push(20);
최상위 요소 접근, 제거
int highestPQ = pq.top(); //현재 우선순위 큐에서 가장 높은 우선순위를 가진 요소에 접근.
pq.pop(); //현재 우선순위 큐에서 가장 높은 우선순위를 가진 요소를 제거.
요소를 추가, 제거할 때 내부적으로 이진 힙(Binary Heap)구조로 최적화되어, 가장 높은 우선순위 요소에 빠르게 접근할 수 있다.
삽입 (Insertion) : O(log n) : 이진 힙(Binary Heap)을 사용하는 경우, 데이터 삽입시 (log n) 이 걸림.
최상위 요소 접근 (Access Minimum/Maximum) : O(1)
최상위 요소 제거 (Deletion of Minimum/Maximum) : O(log n)
요소 개수 확인: O(1)
다익스트라 알고리즘 (Dijkstra's Algorithm):
프림 알고리즘 (Prim's Algorithm):
A* 알고리즘 (A-star Algorithm):
힙 정렬 (Heap Sort):
크루스칼 알고리즘 (Kruskal's Algorithm):
위상 정렬 (Topological Sort):
문자열 검색 알고리즘( ex)Efficient String Searching ):