Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 3.4 KB

File metadata and controls

63 lines (45 loc) · 3.4 KB

堆積(資料結構)

以其他語言閱讀: English, 简体中文, Русский, 日本語, Français, Português, Türkçe, 한국어, Українська

在電腦科學中,堆積是一種特殊的樹狀資料結構,滿足以下描述的堆積性質。

最小堆積中,若 PC 的父節點,則 P 的鍵值(數值)小於或等於 C 的鍵值。

MinHeap

使用 okso.app 製作

最大堆積中,P 的鍵值大於或等於 C 的鍵值。

MaxHeap

Array Representation

堆積中沒有父節點的最頂端節點稱為根節點。

時間複雜度

以下是各種堆積資料結構的時間複雜度。函數名稱假設為最大堆積。

操作 find-max delete-max insert increase-key meld
二元堆積 Θ(1) Θ(log n) O(log n) O(log n) Θ(n)
左偏樹 Θ(1) Θ(log n) Θ(log n) O(log n) Θ(log n)
二項式堆積 Θ(1) Θ(log n) Θ(1) O(log n) O(log n)
費波那契堆積 Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
配對堆積 Θ(1) Θ(log n) Θ(1) o(log n) Θ(1)
Brodal 佇列 Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
Rank-pairing 堆積 Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
嚴格費波那契堆積 Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
2-3 堆積 O(log n) O(log n) O(log n) Θ(1) ?

其中:

  • find-max(或 find-min):分別找到最大堆積中的最大項目或最小堆積中的最小項目(又稱 peek
  • delete-max(或 delete-min):分別移除最大堆積(或最小堆積)的根節點
  • insert:將新的鍵值加入堆積中(又稱 push
  • increase-key 或 decrease-key:分別更新最大堆積或最小堆積中的鍵值
  • meld:將兩個堆積合併成一個新的有效堆積,包含兩者的所有元素,並銷毀原來的堆積

在本知識庫中,MaxHeap.jsMinHeap.js二元堆積的範例。

實作

參考資料