大頂堆和小頂堆的上濾和下濾

2021-09-19 01:36:09 字數 487 閱讀 3345

總結一下:

上濾一般應用於在乙個已經排序好的二叉堆中插入乙個新節點。首先在堆末新建乙個空間,稱為空穴,然後比較穴的值和其父節點的值。從巨集觀上看,空穴會自下而上地到達滿足堆序的位置。

下濾一般應用於刪除了堆頂後的堆序重整過程中。刪除堆頂後把新的堆頂放置在滿足堆序的正確的位置上。分兩種情況:①若是大頂堆:哪個數值大哪個上去(去父節點)②若是小頂堆:哪個數值小哪個上去。

舉例:下列**的功能是從乙個大頂堆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...