學習筆記 堆

2021-07-12 01:17:11 字數 2259 閱讀 1543

#include

#include

typedef struct node

minheap;

//初始化乙個堆

void create(minheap *&h,int maxsize)

bool isfull(minheap *h)

//往堆裡插入資料,其實可以直接在主程式裡輸入就行了

void insert(minheap *&h,int data)

h->size++;

h->elements[h->size]=data;

}

//刪除堆頂的資料(最小的乙個數)先理解刪除,建立乙個堆和刪除差不多

inttemp=h->elements[h->size];//找到堆的最後乙個節點

h->size--;    //刪去堆頂的元素

//查詢temp應該插入的位置

for(parent=1;parent*2<=h->size;parent=child)

h->elements[parent]=temp;//將temp插入該節點

returnmin;

}

//堆是乙個完全二叉樹,

//從第乙個有孩子的節點開始,看它是不是堆,不是的話通過刪除所用的方法將它調整為堆

學習筆記 堆

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

堆學習筆記

完全二叉樹比較適合用陣列來儲存 堆化非常簡單,就是順著節點所在的路徑,向上或者向下,對比,然後交換。從堆的定義的第二條中,任何節點的值都大於等於 或小於等於 子樹節點的值,我們可以發現,堆頂元素儲存的就是堆中資料的最大值或者最小值 把最後乙個節點放到堆頂,然後利用同樣的父子節點對比方法。對於不滿足父...

堆 學習筆記

完全二叉樹形式 具有單調性 可以用來求最值 也可以用來求最值 大根堆 根節點最大 小根堆 根節點最小 借助vector來建堆 include using namespace std int main return 0 make heap a.begin a.end cmp bool cmp int ...