优先队列的意思其实就是一个数列,将他从大到小排,它的定义方式如:
priority_queue<int>q
当然,你也可以将里面的int 改为其他的定义方式。
堆即大根堆,大根堆就如下图:
堆其实有很多的用法:
然后,根据大根堆,大的数要往上排。
先把66和36交换,再把72和84交换。
交换后我们又会发现72比92要小,再移下来,92又比84大,再把84换下来,在终究如下图所示:
下面是对的一些用法:
q.push(x);//将x插入队列中,并自动排序
q.pop();//删除队首
q.top();//取队首
q.empty();//判断队列是否为空
再比如,我想要输入一串数字,将他从小到大排,那该怎么办呢?
#include<bits/stdc++.h>
using namespace std;
priority_queue<int>q;
int main(){
int a,b;
cin>>a;
for(int i=1;i<=a;i++){
cin>>b;
q.push(0-b);
}
for(int i=1;i<=a;i++){
cout<<0-q.top()<<" ";
q.pop();
}
}
输出起来就如:
然后:
谢谢大家,希望我们能再次相遇!