這裡是最小堆,最大堆也是類似的。
1.堆是一顆完全二叉樹。
性質:子節點的值一定不小於父節點的值。
堆的儲存用乙個陣列heap[n]即可。
由於完全二叉樹的性質,節點是按順序排列的,
i 節點的子節點編號為 2i+1 和 2i+2 。
同理 i 節點的父節點為 (i-1)/2 。
操作:堆有插入和刪除兩種操作,由於是二叉樹,兩種操作都是o(logn) 的 。
實現c++**:
#include
using namespace std;
#define max_n 1000
int heap[max_n]
,sz =0;
void
push
(int x)
//迴圈退出的時候已經找到了該放的位置
// 把新節點加入進來
heap[i]
= x;
}int
pop(
)//把最後乙個節點放到它該待的位置
heap[i]
= x;
return ret;
}int
main()
模板 堆的結構
這裡是最小堆,最大堆也是類似的。1.堆是一顆完全二叉樹。性質 兒子節點的值一定不小於父節點的值。堆的儲存用乙個陣列heap n 即可。由於完全二叉樹的性質,節點是按順序排列的,i 節點的子節點編號為 2 i 1 和 2 i 2 同理 i 節點的父節點為 i 1 2 操作 堆有插入和刪除兩種操作,由於...
模板 資料結構 堆
heap,也就是堆,作為常用的優先佇列的替代品,其實還是有優越性的。make heap v.first v.end cmp 把容器調整成堆。push heap v.first v.end cmp 在容器本身是堆,往容器的end中插入後,把end後移,再呼叫這個。pop heap v.first v....
堆結構的C 模板類實現
資料結構中堆的概念不同於 堆疊 它是指一種完全二叉樹,這種二叉樹的任一節點的關鍵字大於 或小於 其子樹的所有節點,即最大堆 最小堆 堆結構的構建採用陣列表示,與之前的二叉樹的線性儲存結構類似,主要成員函式包括插入 刪除根節點等函式。插入數值時直接在陣列的尾端增加元素,從尾端開始往上迭代判斷是否滿足堆...