正经题解
2025-11-09 21:04:35
发布于:浙江
13阅读
0回复
0点赞
由于作者刚刚自学完堆,然后突然就悟了。找了个题目来练练手。
考虑堆排序。
建一个小根堆,用vector输入,之后存进堆里去,在取出堆顶元素就行。
#include <bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, greater<int>> heap;//小根堆
vector<int> a;//输入
int main(){
int n;
cin >> n;
for(int i=1;i<=n;i++){
int x;
cin >> x;
a.push_back(x);
}for(int i:a){
heap.push(i);
}while(heap.size()){
cout << heap.top() << " ";
heap.pop();
}
return 0;
}
然而有脑子的人都能发现vector貌似纯属多余,所以忘掉上面的代码
#include <bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, greater<int>> heap;//小根堆
int main(){
int n;
cin >> n;
for(int i=1;i<=n;i++){
int x;
cin >> x;
heap.push(x);
}while(heap.size()){
cout << heap.top() << " ";
heap.pop();
}
return 0;
}
全部评论 1
2025-11-09 来自 浙江
0





有帮助,赞一个