概述
优先队列
引入
优先队列是一种功能强大的队列,我是在做一道排序题时遇到的。它的功能强大在它能够实现自动排序。
下面给出代码:
#include<iostream>
#include<queue>
using namespace std;
int main(){
priority_queue<int> q;
int b;
int n,a[10];
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++) q.push(a[i]);
for(int i=1;i<=n;i++) {b = q.top();q.pop();cout<<b<<endl;}
}
Input: 5
10 2 8 9 7
Output: 10
9
8
7
2
在这里优先队列自动的对整型元素进行了排序,排序为从大到小。
下面我们来看结构体的优先队列:
#include<iostream>
#include<queue>
using namespace std;
struct node{
int num;
int ord;
bool operator<(const node & x)const{
return num<x.num;
}
}qp;
int main(){
priority_queue<node> q;
int n,a[10];
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++) q.push((node){a[i],i});
for(int i=1;i<=n;i++) {qp = q.top();q.pop();cout<<qp.num<<endl;}
}
Input: 5
10 2 8 9 7
Output: 10
9
8
7
2
在这里,我们要给结构体定义一个算术重载符,用来作为优先队列排序的参考,不然就会报错。上述定义的算术运算符是从大到小的优先队列。
最后
以上就是端庄烧鹅为你收集整理的优先队列杂谈优先队列的全部内容,希望文章能够帮你解决优先队列杂谈优先队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复