筆記 - Priority Queue (PQ)
Concepts
- Priority Queue (PQ)是一種概念,比起regular queue,元素多了一個“priority 優先順序”的性質
- Priority數字越大 => 優先程度越高
- 這個概念可用於各種資料結構中,其中以Max Heap最有效率
Max Heap: Binary tree. 其中parent node一定比兩邊的child nodes大。(左右兩邊child nodes誰大誰小則不一定)
Big O of Enqueue and Dequeue
- Max Heap:
- Enqueue O(log n)
- Dequeue O(log n)
- Array or Linked List:
- Enqueue O(n) (insertion sort for a nearly sorted array)
- Dequeue O(1) - Linked List; O(n)- Array
Idea
Priority Queue為動態的,加入/移除新元素後,檢查新元素與parent node大小,若新元素較大,則將parent node與new node互換
Pseudocode of PQ Enqueue
1 | ENQUEUE (value, priority) |
Pseudocode of PQ Dequeue
1 | DEQUEUE () |
這樣跑完可以讓最優先處理的元素被排在第一個(MH結構)
maxHeapify() 要回去看Heap Sort內容