堆排序,利用优先队列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;
    }
}
全部评论

相关推荐

01-04 11:41
门头沟学院 Java
本菜鸡目前打算写一个业务项目,一个轮子项目。考虑了RPC,但又看到好多不推荐写RPC的,wtf,现在也不懂了,有没有佬给点建议。#简历中的项目经历要怎么写##2025,我想......#
小力士:这不是这个项目的问题,是知识体系的问题,你写了这个,就会延伸出来问你分布式微服务的问题,你要是写业务相关的项目,延伸问你的多会是场景题。相当于是个简历的引导性提问
点赞 评论 收藏
分享
2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务