資料結構與演算法 二叉堆

2021-06-04 04:48:53 字數 658 閱讀 2661

核心操作是sift_up,和sift_down,其他所有操作都是建立在這兩個核心操作的基礎上的,事實上所有的堆結構都可以使用這兩個操作。

const int maxsize = 10001;

int size = 0;

int min_heap[maxsize];/*0號單元不使用,因為如果使用0單元,則k/2無法找到其父結點*/

void sift_up(int k)//從第k個位置開始,計算能否上公升

min_heap[k] = tmp;

}void sift_down(int k)//從第k個位置開始,計算能否下降

min_heap[k>>1] = tmp;

}/*增加*/

void push(int x)/*插入元素x*/

/*刪除*/

/******

按關鍵字的值來pop的操作在關鍵一定無重複的時候可以有,

但一旦有重複關鍵字,那麼pop操作是很難正確實現的

*******/

void pop(int k=1)/*彈出位於k位置的元素,1是預設堆頂*/

int gettop()

/*修改*/

void update(int k,int x)/*將第k位置的元素的關鍵字更新為x*/

資料結構與演算法 二叉堆

二叉堆本質上是一種完全的二叉樹,它分為兩個型別。1.最大堆 2.最小堆 什麼是最大堆?最大堆的任何乙個父節點的值,都大於或等於它左 右孩子節點的值。什麼是最小堆?最小堆的任何乙個父節點的值,都小於或等於它左 右孩子節點的值。二叉堆的根節點叫做堆頂。最大堆和最小堆的特點決定了 最大堆的堆頂是整個堆中的...

資料結構與演算法 01 二叉堆

保證父節點優先順序始終高於子節點。插入 判斷父子節點的優先順序 刪除 查詢 直接返回根節點的值 tip 根節點下標從1開始 include define max 1000000 using namespace std int heap max 10 int n,cnt 0 cnt為堆中元素個數 sh...

資料結構 二叉堆

二叉堆一般用來實現優先佇列 優先佇列是一種至少允許以下兩種操作的資料結構 insert 以及 deletemin 同查詢樹一樣,二叉堆具有結構性與堆序性,對二叉堆的基本操作可能會破壞這些性質,所以二叉堆的操作要直到其基本性質滿足才能結束。一 結構性 二叉堆在結構上為完全二叉樹,其具有完全二叉樹的結構...