STL應用之大根堆小根堆

2021-06-09 23:53:20 字數 639 閱讀 3465

定義:

priority_queue*** 大根堆

priority_queue, greater> ***x 小根堆

訪問最值使用 ***.top()

堆自動把最值維護在堆最上層

刪除最值使用 ***.pop()

刪除後自動維護出乙個新堆

插入元素使用 ***.push(***x)

插入到元素該在的位置上 並自動維護堆有序

#include#include#include#include#includeusing namespace std;

priority_queuepq1; //預設最大堆

priority_queue,greater> pq2; //最小堆

/** addition

equal_to 相等

not_equal_to 不相等

less 小於

greater 大於

less_equal 小於等於

greater_equal 大於等

這些在所有的排序演算法中同樣適用

*/int main()

for(int i=0;i<20;i++)

{cout<

堆(大根堆 小根堆)

堆又可稱之為完全二叉堆。這是乙個邏輯上基於完全二叉樹 物理上一般基於線性資料結構 如陣列 向量 鍊錶等 的一種資料結構。學習過完全二叉樹的同學們都應該了解,完全二叉樹在物理上可以用線性資料結構進行表示 或者儲存 例如陣列int a 5 就可以用來描述乙個擁有5個結點的完全二叉樹。那麼基於完全二叉樹的...

C STL 中大根堆,小根堆的應用。

priority queue int,vector int less int s less表示按照遞減 從大到小 的順序插入元素 priority queue int,vector int greater int s greater表示按照遞增 從小到大 的順序插入元素 不寫第三個引數或者寫成les...

堆(Heap)大根堆 小根堆

具有以下的特點 1 完全二叉樹 2 heap中儲存的值是偏序 min heap 父節點的值小於或等於子節點的值 max heap 父節點的值大於或等於子節點的值 一般都用陣列來表示堆,i結點的父結點下標就為 i 1 2。它的左右子結點下標分別為2 i 1和2 i 2。如第0個結點左右子結點下標分別為...