什麼是最小和最大堆積

在計算機科學中,堆(heap)是一種特殊的完全二叉樹,用於實現優先佇列(priority queue)的數據結構。堆分為最小堆(Min Heap)和最大堆(Max Heap)兩種類型。

最小堆(Min Heap): 最小堆是一種堆,其中每個父節點的值都不大於其子節點。在最小堆中,堆頂的元素是整個堆中值最小的元素。最小堆也稱為大頂堆(Biggest Top Heap),因為父節點的值總是大於或等於其子節點的值。

最大堆(Max Heap): 最大堆是一種堆,其中每個父節點的值都不小於其子節點。在最大堆中,堆頂的元素是整個堆中值最大的元素。最大堆也稱為小頂堆(Smallest Top Heap),因為父節點的值總是小於或等於其子節點的值。

最小堆和最大堆都是通過調整堆的節點值來維護堆的性質的,這種調整通常通過交換節點來實現。堆可以用數組來表示,其中父節點和子節點的關係可以通過下標來計算。例如,對於下標為i的節點,其左子節點的下標為2i+1,右子節點的下標為2i+2,而父節點的下標則為(i-1)/2。

最小堆和最大堆在許多算法和數據結構中都有套用,例如在圖算法中的優先權佇列、A*搜尋算法、分散式系統中的一致性算法等。