首先來看全然二叉樹的定義:
若設二叉樹的深度為h,除第 h 層外,其他各層 (1~h-1) 的結點數都達到最大個數,第 h 層全部的結點都連續集中在最左邊,這就是全然二叉樹。而將一維陣列視為全然二叉樹書得到的即為堆。
堆效率極高。像十分經常使用的
排序演算法、
dijkstra
演算法、prim
演算法等都要用堆才幹優化,差點兒每次都要考到的
二叉排序樹
的效率也要借助
平衡性來提高,而平衡性基於全然二叉樹。
stl中與堆相關的4個函式——建立堆make_heap(),在堆中加入資料push_heap()。在堆中刪除資料pop_heap()和堆排序sort_heap():
標頭檔案 #include
以下的_first與_last為能夠隨機訪問的迭代器(指標)。_comp為比較函式(仿函式),其規則——假設函式的第乙個引數小於第二個引數應返回true,否則返回false。
建立堆
make_heap(_first, _last, _comp)
預設是建立最大堆的。對int型別,能夠在第三個引數傳入greater()得到最小堆。
在堆中加入資料
push_heap (_first, _last)
要先在容器中增加資料,再呼叫push_heap ()
在堆中刪除資料
pop_heap(_first, _last)
要先呼叫pop_heap()再在容器中刪除資料
堆排序
sort_heap(_first, _last)
排序之後就不再是乙個合法的heap了
#include #include #include #include using namespace std;
void printfvectorint(vector&vet)
int main()
反應堆模式
1 定義 反應堆模式是一種物件行為類的設計模式,對同步事件分揀和派發。它是處理併發i o比較常見的一種模式,用於同步i o。其中心思想是將所有要處理的i o事件註冊到乙個中心i o多路復用器上,同時主線程阻塞在多路復用器上 一旦有i o事件到來或者是準備就緒,多路復用器返回並將相應的i o事件分發到...
反應堆問題
維克多博士創造了乙個裂變反應堆,可取用處於液體狀態的放射性物質。反應堆的容量是v加侖。他有n瓶的放射性液體,每個都有一定的質量和一定的體積。當液體倒入反應堆時,也產生一些單位的能量。現在,維克多想要將能量輸出最大化。但是,有乙個限制條件。他研究了原子元素的物理知識和歷史,認識到反應堆內放射性液體的總...
reactor 反應堆模型
1.reactor模型,本質上講管理網路io 使用下面這個結構用來管理我們的io struct ntyreactor 下面這段 比較核心 我們關心的事件與發生的事件發生時,才去呼叫 2.實現 include include include include include include includ...