각 요소가 우선순위를 가지고 있는 자료 구조로, 일반적인 큐와 달리 우선순위가 높은 요소가 먼저 처리됨.
우선순위 큐는 힙(Heap) 자료구조로 구현되는 경우가 많으며, 이진 힙(Binary Heap) 을 많이 사용함.
배열(Array)
-삽입 : O(1)
-삭제 : O(n) (최대값 또는 최소값을 찾기 위해 배열 전체를 순회해야 함)
연결 리스트(Linked List)
-삽입 : O(n) (정렬된 위치에 삽입하기 위해)
-삭제 : O(1) (정렬된 리스트의 맨 앞 요소를 제거)
힙(Heap)
-이진 힙(Binary Heap) : 완전 이진 트리로, 최소 힙(min - heap) 과 최대 힙(max - heap) 으로 구분됨
o 최소 힙(min - heap) : 부모 노드의 값이 자식 노드의 값보다 작거나 같은 완전 이진 트리. 루트 노드가 가장 작은 값을 가짐
o 최대 힙(max - heap) : 부모 노드의 값이 자식 노드의 값보다 크거나 같은 완전 이진 트리. 루트 노드가 가장 큰 값을 가짐
-삽입 : O(log n)
-삭제 : O(log n)
-힙을 사용한 우선순위 큐는 효율적인 삽입과 삭제 연산을 제공
이진 힙은 배열로 구현될 수 있음. 인덱스 계산을 통해 부모와 자식 노드 간의 관계를 유지 할 수 있음
-부모 노드 인덱스 : (i - 1) // 2
-왼쪽 자식 노드 인덱스 : 2 i + 1
-오른쪽 자식 노드 인덱스 : 2 i + 2