二叉堆

堆就是一堆数据(百度百科给的是一棵树的数组对象),可以对它进行相应的操作,比如排序

二叉堆就是把上一行括号中的“树”改成“二叉树”

优先队列和二叉堆有着密不可分的关系

优先队列的实现就是二叉堆,用它可以进行非常快速的排序,

基础模板:

#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;
}

(排最大序列,没用万用头)

posted @ 2019-04-26 19:43  _Alex_Mercer  阅读(83)  评论(0编辑  收藏  举报