// 기본형: 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자)PriorityQueue<Integer> pQ =newPriorityQueue<>();// 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자)PriorityQueue<Integer> pQ =newPriorityQueue<>(Collections.reverseOrder()
Implement Level
Unsorted List
우선 순위가 높은 item 찾기 O(N)
우선 순위가 높은 item Dequeue O(1)
item이 삭제된 자리가 비어 있기 때문에 뒤에 존재하는 item들 한 칸씩 앞으로 Shift O(N)
Array-Based Sorted List
우선 순위로 정렬돼 있기 때문에 item 삭제는 O(1) 삭제된 부분을 메꾸기 위해 Shift O(N)
Enqueue 진행하면 우선 순위에 따른 item 위치 찾기 O(N), Insert O(1), 넣을 자리 마련하기 위해 item들 뒤로 한 칸씩 Shift O(N)
Linked Sorted List
Enqueue 시에 new item의 우선 순위에 따른 위치를 찾기 위해 O(N)
Binary Tree
평균적으로 item의 위치를 찾는 데 O(log N)
정렬 리스트를 tree로 구현한 것처럼 tree가 선형이라면 item 위치 탐색에 O(N)