#include<iostream>
#include<queue>
using namespace std;
int main() {
//优先队列,是用小根堆大根堆实现的,二叉树结构,可以快速得到最大值最小值
//默认是从最大堆
//即最大值在队头
/*
top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾(并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容
*/
priority_queue<int>dui;
//等同于 priority_queue<int, vector<int>, less<int> > dui;
//即依次减小
int n, t;
cout << "大爷您要输入几个数?" << endl;
cin >> n;
for (int i = 0; i < n;i++) {
cin >> t;
dui.push(t);
}
cout << "最大值:" << dui.top()<<endl;
cout << "不断输出较大值" << endl;
while (!dui.empty()) {
cout << dui.top() << " ";
dui.pop();
}
cout << "\n=========" << endl;
//依次增大
cout << "请再次输入" << n << "个数:" << endl;
priority_queue<int, vector<int>, greater<int>>dui2;
//greater===>依次增大
for (int i = 0; i < n; i++) {
cin >> t;
dui2.push(t);
}
cout << "最小值:" << dui2.top() << endl;
cout << "不断输出较小值" << endl;
while (!dui2.empty()) {
cout << dui2.top()<<" ";
dui2.pop();
}
system("pause");
return 0;
}
//队尾 <- 队首
//-1 1 2 3 4 less 逐渐减小(默认)
//10 8 7 6 5 greater 逐渐增大