【算法分析】
priority_queue 中文意思为“优先队列”,本质上是一个堆。
这使得程序员在编码过程中,可以直接利用 priority_queue 构建堆,从而避免了手动构建堆的繁琐。
priority_queue 常用的基本操作与队列相同。如:
top(),访问队头元素
empty(),判断队列是否为空
size(),返回队列元素个数
push(),插入元素到队尾并排序。大根堆递减排序,小根堆递增排序。
pop(),弹出队头元素
【算法代码】
#include<bits/stdc++.h>
using namespace std;
priority_queue<int> G; //Large Root Heap
priority_queue<int,vector<int>,greater<int> > L; //Small Root Heap
int main() {
int x;
while(cin>>x) {
G.push(x);
L.push(x);
}
while (!G.empty()) { //Large root heap, decreasing output
cout<<G.top()<<" ";
G.pop();
}
cout<<endl;
while(!L.empty()) { //Small root heap, increasing output
cout<<L.top()<<" ";
L.pop();
}
cout<<endl;
return 0;
}
/*
in:
20 40 32 67 40 20 89 300 400 15
out:
400 300 89 67 40 40 32 20 20 15
15 20 20 32 40 40 67 89 300 400
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/119813641
https://blog.csdn.net/hnjzsyjyj/article/details/108929993