學習記錄 堆

2022-09-10 14:06:20 字數 334 閱讀 5979

堆是一種特殊的完全二叉樹,我們在構造二叉查詢樹的時候,保持左子樹《根節點《右子樹,而最大堆和最小堆則是要求根節點大於或小於所有子節點。

由於堆是一種完全二叉樹,所以可以用線性陣列儲存,假設根節點為1,父節點為n,則左子節點為2*n,右子節點為2*n+1

1.堆的插入

統一在陣列末端進行插入,然後比較子節點與父節點的大小關係,遞迴向上調整位置直到滿足最大堆或最小堆的要求。

2.堆刪除

堆由於根節點具備特殊性質(最大或最小),因此堆中的刪除一般指刪除根節點,重構時,將陣列末端的元素移動至根部,通過堆的規則調整順序即可。

3.堆排序

將堆的根節點依次彈出。

堆 學習記錄

此處預設二叉大根堆 描述 一棵樹,完全二叉 i的左孩子為2i,右為2i 1 對於每個節點,它的孩子鍵值小於它,優先佇列就是用堆實現的 性質 1.樹根為最大點 堆頂 故不斷重複 取頂 刪頂就能得到排序序列 堆排序 2.此結構決定了不能在裡面找任意元素 陣列實現不服 或者迭代,所以stl的優先佇列不能用...

學習筆記 堆

heap 堆 堆是一種建立在樹上的結構,是一種完全二叉樹型的資料結構,目前了解到的應用是堆排序,然後用於實現優先佇列。堆的特點是,子結點一定比父結點大或者小於父結點。其中,所有子結點都小於父結點的堆是最大二叉堆,子結點小於父結點的是最小二叉堆。堆的核心是heapify,維護堆合法性的演算法 後續談到...

學習筆記 堆

include include typedef struct node minheap 初始化乙個堆 void create minheap h,int maxsize bool isfull minheap h 往堆裡插入資料,其實可以直接在主程式裡輸入就行了 void insert minhea...