什麼是最大堆積(min heap)

最大堆(Max-Heap)是一種數據結構,它是二叉堆的一種特殊形式,用於存儲父節點大於其所有子節點的元素。最大堆通常用於實現優先佇列,其中堆頂的元素是所有元素中最大的。

最大堆滿足以下性質:

  1. 堆中任一結點的值都不小於其子結點的值。
  2. 堆頂的元素是整個堆中最大的元素。
  3. 最大堆是一個完全二叉樹,這意味著除了最底層外,其他層的節點都是滿的。

最大堆的插入操作是將一個新的元素添加到堆的底部,然後通過向上調整(updating)操作,將新元素移動到正確的位置,直到它滿足最大堆的性質。刪除最大元素的操作是將堆頂元素與最後一個元素交換位置,然後將堆頂元素刪除,接著通過向下調整(downward)操作,將剩餘的元素重新排列成最大堆的形狀。

最大堆的實現通常使用數組來存儲,數組下標從0開始。每個元素的位置可以通過其父節點、左子節點和右子節點的位置來計算:

其中,i是當前元素在數組中的位置。

最大堆的時間複雜度是O(log n),其中n是堆中元素的數量。這個時間複雜度適用於插入、刪除最大元素和調整堆的操作。