堆排序,利用优先队列priority_que来做

输入n个整数,输出其中最小的k个

http://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c

#include <iostream>
#include <vector>
#include <set>
#include<algorithm>
#include<string>
#include<queue>
using namespace std;

int main() {
  int n;
    while(cin>>n){
        int k;
        cin>>k;
        priority_queue<int>que;//默认是大顶堆
        for(int i =0;i<n;i++){
            int x;
            cin>>x;
            if(que.size()<k)que.push(x);
            else {
                if(x<que.top()){
                    que.pop();
                    que.push(x);
                }
            }
        }
        vector<int>vet;
        while(que.size()>0){
            vet.push_back(que.top());
            que.pop();
        }
        reverse(vet.begin(), vet.end());
        for(auto c:vet){
            cout<<c<<" ";
        }
        cout<<endl;
    }
}
全部评论

相关推荐

纯真的河老师在喝茶:第一个是这个时间点岗位少,第二个是这个简历重复度太高了,10个有9个简历差不多的
点赞 评论 收藏
分享
专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务