数组模拟堆实现堆排序

news2024/10/5 14:40:25

文章目录

  • Question
  • Ideas
  • Code

Question

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

输入格式
第一行包含整数 n
和 m

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

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

数据范围
1≤m≤n≤105

1≤数列中元素≤109
输入样例:
5 3
4 5 1 3 2
输出样例:
1 2 3

Ideas

在这里插入图片描述

Code

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1e5 + 10;
int h[N]; // 用一个数组模拟堆

int cnt; // 堆中有多少元素
int n, m;

void down(int u){
    int t = u; // 父节点、两个子节点最小的值的下标
    if (2 * u <= cnt && h[2 * u] < h[t]) t = 2 * u;
    if (2 * u + 1 <= cnt && h[2 * u + 1] < h[t]) t = 2 * u + 1;
    if (t != u){
        swap(h[t], h[u]);
        down(t);
    }
    
}
int main(){
    cin >> n >> m;
    
    cnt = n;
    for (int i = 1; i <= n; i ++) cin >> h[i]; // 注意下标从1开始,为了防止左孩子下标(2*t)为0
    
    // O(N)时间复杂度建堆
    for (int i = n / 2; ~i ; i --) down(i);
    
    // 输出堆顶,最小值(小根堆)
    while (m --){
        cout << h[1] << ' ';
        // 删除堆顶
        h[1] = h[cnt];
        cnt --;
        down(1);
    }
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何选择安全可靠的跨网文件安全交换一体机?

各行各业为了保护核心数据&#xff0c;绝大多数企业采取的第一个步骤是将企业内网与互联网进行隔离&#xff0c;将内部数据“困在”内网&#xff0c;同时也能够有效屏蔽外部网络攻击的风险。较大规模的企业&#xff0c;比如金融、政府、集成电路等行业机构&#xff0c;还可能对…

UE5----使用C++的项目重新打开后东西丢失

最近开始学习c编写代码&#xff0c;发现在场景里放置了Actor后&#xff0c;第二天打开项目&#xff0c;场景里边的放的球啊啥的东西没有了&#xff0c;蓝图类也丢失了父类。 解决方案&#xff1a; 不在Epic里打开虚幻引擎&#xff0c;在VS中打开。点击这个小绿三角&#xff0…

河北吉力宝:多维发力走创新智能鞋业道路

在快速发展的时代潮流中&#xff0c;智能科技正在改变我们的生活方式&#xff0c;消费者的选择更加多元化&#xff0c;以及制鞋行业同质化竞争严重等多重不利因素的影响&#xff0c;我国制鞋行业竞争加剧&#xff0c;各制鞋企业也在不断探索新市场&#xff0c;进一步拓展市场空…

京东数据分析:2023年下半年母婴市场各大细分赛道消费趋势盘点!

于今天的新生代父母而言&#xff0c;在诸多消费观念被改变的当下&#xff0c;新生父母们在育儿上更强调精细化&#xff0c;在这种情况下&#xff0c;母婴市场的消费升级已是大势所趋。不过&#xff0c;在如今收入增速整体放缓的背景下&#xff0c;各细分赛道的消费升级都出现了…

文心大模型4.0正式发布!来看看这届百度世界有啥亮点

今天&#xff0c;2023百度世界大会开幕了&#xff0c;大家都关注了吗&#xff1f;本次大会有很多亮点&#xff0c;我先摘一些和大家分享。 李彦宏现场做「手把手教你做AI原生应用」的分享&#xff0c;百度很多产品通过大模型进行了重构。文心大模型4.0重磅发布&#xff0c;综合…

mac读写硬盘的软件Tuxera NTFS2023免费版下载

Mac用户在使用NTFS格式移动硬盘时&#xff0c;会遇到无法写入硬盘的情况。要想解决无法写入的问题&#xff0c;很多人选择使用Mac读写软件。面对市面上“众多”的读写硬盘软件&#xff0c;用户应该怎么选择呢&#xff1f;初次接触移动硬盘的伙伴可能不知道移动硬盘怎么和电脑连…

短视频矩阵剪辑系统源码

短视频剪辑矩阵系统开发源码----源头搭建 一、源码技术构建源码部署搭建交付之---- 1.需要协助系统完成部署、接口全部正常接入、系统正常运行多久&#xff1f;7个工作日 2.需要准备好服务器以及备案域名 3.短视频SEO模块一年项目带宽&#xff0c;带宽最低要求10M&#xff0c;…

基于Java的交通事故档案管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

vue重修【005】自定义路由、插槽

文章目录 版权声明自定义指令指令初识指令中配置项指令语法指令值v-loading指令的封装分析实现 插槽默认插槽插槽默认值具名插槽作用域插槽使用步骤完整案例 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程…

[python 刷题] 143 Reorder List

[python 刷题] 143 Reorder List 题目&#xff1a; You are given the head of a singly linked-list. The list can be represented as: L 0 → L 1 → … → L n − 1 → L n L_0 → L_1 → … → L_{n - 1} → L_n L0​→L1​→…→Ln−1​→Ln​ Reorder the list to be o…

安装SSL证书提示不信任,怎么办?

随着越来越多的SSL证书错误的状况出现&#xff0c;经常有“SSL证书不受信任怎么办”这类的难题&#xff0c;而且对这种难题很头痛&#xff0c;以下是JoySSL公司常见的SSL证书不受信任的缘故及解决方案。 1.证书过期 网络证书跟我们的纸质证书一样&#xff0c;他都会有一个有效期…

K 近邻算法解析: 从原理到实践的机器学习指南

机器学习 第三课 k 近邻 概述机器学习简介K 近邻算法K 近邻中的距离欧氏距离曼哈顿距离余弦相似度 选择合适的 K 值奇数 vs 偶数通过交叉验证选择 k 值 实战分类问题回归问题 K 近邻算法的优缺点优点缺点 手把手实现 k 近邻手搓算法实战分类 概述 机器学习 (Machine Learning)…

OWASP TOP 10-注入-SQL注入

文章目录 OWASP TOP 10注入注入的分类SQL注入SQL注入的危害&#xff1a;sqlmap自动化注入注入类型回显注入盲注时间注入不同请求方式的注入特殊位置的注入利用DNSLOG注入基于报错的注入二阶注入宽字节注入堆叠注入sql注入读写文件 OWASP TOP 10 A1&#xff1a;2017 注入 A2&am…

luming.02无限进步 #我的创作纪念日

前言&#xff1a;今天早上起床后&#xff0c;看见CSDN官方小助手发来一条系统通知&#xff0c;刚好没什么事&#xff0c;就点开分享分享我的创作经历 luming.02 &#xff0c;不知不觉今天已经是你成为创作者的 第128天 啦&#xff0c;为了纪念这一天&#xff0c;我们为您准备了…

DS线性表之栈和队列

前言 我们前面已经介绍并实现了顺序表和链表以及介绍了他们的优缺点&#xff01;本期我们再来学习一个基本数据结构栈和队列~&#xff01;这里的栈可不是内存的那个栈&#xff0c;内存的那个栈是操作系统的概念&#xff0c;而这个栈是数据结构的栈&#xff0c;是一个容器。他们…

二叉树相关算法

1、二叉树基本操作 二叉树的定义就不在这里多说了&#xff0c;下面这个图就是一个简单的二叉树&#xff1a; 二叉树的三种遍历方式&#xff1a; 前序遍历&#xff1a;头左右&#xff0c;也就是先头后左再右&#xff1a;1245367 public static void prePrint(BinaryTreeNode …

黑豹程序员-架构师学习路线图-百科:MySQL

文章目录 1、什么是MySQL2、MySQL受喜爱程度经典四人组&#xff1a; 3、发展历史4、MariaDB 1、什么是MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 …

彻底搞懂:防止表单重复提交,前端限制还是后端限制?

欢迎大家来到小米的技术分享专栏&#xff01;今天我将为大家带来一个热门话题&#xff1a;如何有效地防止表单重复提交。在开发中&#xff0c;我们常常会遇到这样的问题&#xff1a;用户频繁点击提交按钮&#xff0c;导致数据重复提交&#xff0c;给系统和用户体验带来不必要的…

python项目之统一身份认证协议设计与实现

项目简介 统一身份认证协议设计实现了以下功能&#xff1a; 通过以首页设计、服务管理设计、日志管理设计、用户的信息管理等内容来完成对整个系统的功能模块的设计。 服务管理来完成对统一身份认证的系统整体管理&#xff0c;包括的对托管的注册服务功能管理、对于系统网址的…

第七章 网络安全 | 计算机网络(谢希仁 第八版)

文章目录 第七章 网络安全7.1 网络安全问题概述7.1.1 计算机网络面临的安全性威胁7.1.2 安全的计算机网络7.1.3 数据加密模型 7.2 两类密码体制7.2.1 对称密钥密码体制7.2.2 公钥密码体制 7.3 数字签名7.4 鉴别7.4.1 报文鉴别7.4.2 实体鉴别 7.5 密钥分配7.5.1 对称密钥的分配7…