堆(heap):
結(jié)構(gòu)性:用數(shù)組表示的完全二叉樹
有序性:任一結(jié)點的關(guān)鍵字是其子樹所有結(jié)點的最大值(最小值),從根結(jié)點到任一結(jié)點路徑上的結(jié)點序列都是有序的
最大值:最大堆(MaxHeap)大頂堆
最小值:最小堆(MinHeap)小頂堆
堆(最大堆)的插入:
新元素插入到完全二叉樹的下一位,如果新元素大于其父結(jié)點,則交換位置,直到其小于其父結(jié)點。O(logN)
堆(最大堆)的刪除:
刪除根結(jié)點,將樹的最后一個結(jié)點替換為根,將新的根結(jié)點與它的左右子樹的根節(jié)點比較大小,如果根節(jié)點小于左右子樹的根節(jié)點,與兩者中的較大者交換位置,直到其大于左右子樹的根結(jié)點
堆(最大堆)的建立:
1、將N個元素相繼插入到初始為空的最大堆中,O(NlogN)
2、O(N)
1、將N個元素按輸入順序存入,先滿足完全二叉樹的結(jié)構(gòu)特性
2、調(diào)整各結(jié)點位置,以滿足最大堆的有序特性(最大調(diào)整次數(shù)為各個結(jié)點的高度和)