總結一下:
上濾一般應用於在乙個已經排序好的二叉堆中插入乙個新節點。首先在堆末新建乙個空間,稱為空穴,然後比較穴的值和其父節點的值。從巨集觀上看,空穴會自下而上地到達滿足堆序的位置。
下濾一般應用於刪除了堆頂後的堆序重整過程中。刪除堆頂後把新的堆頂放置在滿足堆序的正確的位置上。分兩種情況:①若是大頂堆:哪個數值大哪個上去(去父節點)②若是小頂堆:哪個數值小哪個上去。
舉例:下列**的功能是從乙個大頂堆h
的某個指定位置p
開始執行下濾。
/*大頂堆的下濾:(左右孩子結點)誰數值大誰上*/
void percolatedown( int p, priorityqueue h )
h->elements[p] = tmp;
}
二叉堆實現優先佇列中的上濾和下濾
優先佇列是使用二叉堆來實現 其中很重要的兩個操作,乙個是插入,另乙個是刪除最優先值 這裡認為是最小值 其中插入操作可以這樣實現 把x放入二叉堆的最後端,然後再通過 上濾 操作把x放到相應位置 刪除操作可以這樣實現 把最頂端的元素 即 最小值刪除,然後把堆中最後乙個元素先放到最頂端,然後通過 下濾 操...
python資料結構 大頂堆和小頂堆
class heap 二叉堆的實現 小頂堆 def init self self.heaplist 0 預設乙個 0 做佔位,使得根節點的索引在 1 上 self.currentsize 0 最大節點的索引位置 def perup self,i 將小節點逐步上公升 while i 2 0 if se...
小頂堆及大頂堆的建立
首先明確堆是乙個完全二叉樹,小頂堆指根結點的值小於或等於左右子節點的值,大頂堆指根結點的值都大於或等於左右子節點的值 關於大小頂堆的建立更詳細的介紹 include include include include include include include include using names...