堆就是一堆数据(百度百科给的是一棵树的数组对象),可以对它进行相应的操作,比如排序
二叉堆就是把上一行括号中的“树”改成“二叉树”
优先队列和二叉堆有着密不可分的关系
优先队列的实现就是二叉堆,用它可以进行非常快速的排序,
基础模板:
#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<cmath> using namespace std; int n,a[100005]; priority_queue<int> q; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ int x; scanf("%d",&x); q.push(x); } for(int i=1;i<=n;i++){ printf("%d ",q.top()); q.pop(); } return 0; }
(排最大序列,没用万用头)