当前位置: 首页 > news >正文

[C++][算法基础]堆排序(堆)

输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。

输入格式

第一行包含整数 n 和 m。

第二行包含 n 个整数,表示整数数列。

输出格式

共一行,包含 m 个整数,表示整数数列中前 m 小的数。

数据范围

1≤m≤n≤10^{5}
1≤数列中元素≤10^{9}

输入样例:
5 3
4 5 1 3 2
输出样例:
1 2 3

代码:

#include<iostream>
#include<algorithm>
using namespace std;const int N = 100010;
int heap[N],l;
int n,m;void down(int now){int target = now;if(2*now <= l && heap[2*now] < heap[target]){target = 2 * now;}if(2*now + 1<= l && heap[2*now + 1] < heap[target]){target = 2 * now + 1;}if(target != now){swap(heap[target],heap[now]);down(target);}
}int main(){cin>>n>>m;for(int i = 1;i<=n;i++){cin>>heap[i];}l = n;for(int i = n/2;i>0;i--){down(i);}while(m--){cout<<heap[1]<<" ";heap[1] = heap[l];l--;down(1);}return 0;
}

 

http://www.lryc.cn/news/334053.html

相关文章:

  • 备考ICA----Istio实验15---开启 mTLS 自动双向认证实验
  • Hive SchemaTool 命令详解
  • 51单片机入门_江协科技_17~18_OB记录的笔记
  • xss.pwnfunction-Ah That‘s Hawt
  • Python学习从0开始——005数据结构
  • 力扣每日一题:LCR112--矩阵中的最长递增路径
  • 树莓派部署yolov5实现目标检测(ubuntu22.04.3)
  • 2024 年最新使用 Wechaty 开源框架搭建部署微信机器人(微信群智能客服案例)
  • Redis从入门到精通(九)Redis实战(六)基于Redis队列实现异步秒杀下单
  • 什么是多路复用器滤波器
  • Severt和tomcat的使用(补充)
  • JavaEE初阶——多线程(一)
  • MongoDB主从复制模式基于银河麒麟V10系统
  • Vue使用高德地图
  • 2024-04-07(复盘前端)
  • SpringCloud学习(10)-SpringCloudAlibaba-Nacos服务注册、配置中心
  • OKCC外呼中心配置的电话系统规则
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.31-2024.04.05
  • 性能测试工具 ab(Apache Bench)使用详解
  • 智能网联汽车自动驾驶数据记录系统DSSAD数据元素
  • Ubuntu 20.04.06 PCL C++学习记录(十八)
  • 细雨踏春日,新会公安护平安
  • 3d怎么在一块模型上开个孔---模大狮模型网
  • Python景区票务人脸识别系统(V2.0),附源码
  • 全球化业务的网络安全挑战
  • SQL简单优化思路
  • 外包干了25天,技术倒退明显
  • webpack环境配置分类结合vue使用
  • 【蓝桥杯嵌入式】第十三届省赛(第二场)
  • maya节点绕轴旋转