堆结构与堆排序

news/2025/1/14 10:15:58/文章来源:https://www.cnblogs.com/benscode/p/18670236

测试链接:https://leetcode.cn/problems/sort-an-array/

堆结构:

是一颗完全二叉树
分为大根堆和小根堆
大根堆:每一颗子树最大值都在子树的根部
小根堆:每一颗子树最小值都在子树的根部
每一位父亲i的两个孩子的节点位置(若存在)分别为:i*2+1,i*2+2
同理每一个孩子的父亲节点位置为:(i-1)/2

堆的建立与排序:

    //建立大根堆//每一颗子树的根都是该子树的最大值void heapup(int i,vector<int>&nums)//大的数往上调整{while(((i-1)>>1)>=0&&nums[i]>nums[(i-1)>>1]){swap(nums[i],nums[(i-1)/2]);i=(i-1)/2;}   }void heapdown(int i,vector<int>&nums,int size)//小的数往下调整{int l=(i<<1)+1;while(l<size){int best;if(l+1<size){if(nums[l+1]>nums[l])best=l+1;else best = l;}else{best=l;}if(nums[i]>=nums[best]){break;}else{swap(nums[i],nums[best]);i=best;l=(i<<1)+1;}}}void heapsort1(vector<int>&nums)//从顶到底建立大根堆并排序{int size=nums.size();for(int i=0;i<size;i++){heapup(i,nums);//先up建立大根堆}while(size>1){swap(nums[0],nums[size-1]);size--;heapdown(0,nums,size);//后dwon进行堆排序}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷力扣的技巧:4 个步骤 7 个关键点,事半功倍,冲进大厂!

最近好多人问我咋刷力扣呀,今天我就来给大家好好唠唠。我总结了7个要点和4个步骤,尤其是最后那提效4步骤,可太有用啦。 大家一定要看到最后哦,记得点赞、收藏呀。要点一:别光追求刷题量,题解也得看 咱好多同学呀,解开一道题就着急忙慌地去刷下一道,还把刷题数量当成衡量…

Linux 常用脚本命令-lsof、find、rpm、SS、top、vim

1,关机命令1 shutdown -h now/0 2 halt 3 init 0 4 poweroff 5 举例: 6 shutdown -h 3 ------3分钟后关机(可用shutdown -c来取消3分钟关机的操作)2,重启命令1 shutdown -r now/0 2 init 6 3 reboot 4 举例: 5 shutdown -r 3 ------3分钟后重启(可用shutdown -c来…

英伟达即将压缩AI模型的成本

在CES上,英伟达展示了一些有趣的新产品,其中最亮眼的是黄仁勋的新皮夹克。我的意思是,看看那件夹克:这是技术发布会还是时尚秀? 你不觉得惊艳吗? 说实话,我有点惊讶为什么更多人没有提到这个。这是黄仁勋迄今为止最棒的皮夹克。 当然,还有其他东西,比如全新的RTX 50系…

傅里叶级数

傅里叶级数 转自 https://zhuanlan.zhihu.com/p/609597010傅里叶级数的公式: 其中: 为了积分方便,积分区间一般设为[-π, π],也相当一个周期T的宽度。 1、把一个周期函数表示成三角级数:首先,周期函数是客观世界中周期运动的数学表述,如物体挂在弹簧上作简谐振动、单…

旅游巴士

旅游巴士一看题啥也不会 注意到数据点范围,发现有特殊性质 ai=0 ,也就是说,每个景点没有时间限制,所以在分层图上跑BFS最短路就行了。设 dis[i][j] 为到第 i 个点时,在时刻 t 时刻到达,记录为 t mod k=j,分为 j 层。 考虑正解,假设现在到达了 u 号点,在 t 时刻,要去往…

VS2022 安装 .NET Framework 4.0 和 .NET Framework 4.5 的方法

前言2022年5月27日,刚刚把VS2019升级到了VS2022,安装时已经不提供.NET Framework 4.0和.NET Framework 4.5的目标框架了,打开VS也提示不支持目标框架。 解决方法1、下载.NET Framework框架.NET Framework 4.5.2.NET Framework 4.5.1.NET Framework 4.5.NET Framework 4.0备…

《ESP32-S3使用指南—IDF版 V1.6》第二章 常用的C语言知识点

第二章 常用的C语言知识点 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp…

Avalonia 简单实现输入法光标跟随效果

本文将告诉大家如何在 Avalonia 里面实现输入法光标跟随效果本文是在 11.1.0 的 Avalonia 版本里面实现效果 本文内容里面只给出关键代码片段,如需要全部的项目文件,可到本文末尾找到本文所有代码的下载方法 核心是编写一个类型,让这个类型继承 TextInputMethodClient 类。然…

【一文详解】解决跨网文件传输三大瓶颈 选择专业文件摆渡系统

在数字化办公日益普及的今天,跨网文件传输成为许多企业面临的技术瓶颈。传统的文件传输方式往往无法满足跨地域、跨网络环境中的需求,尤其是随着数据量的增大和传输频率的提高,企业在进行文件交换时频繁遇到速度慢、安全性差、稳定性差等问题。因此,选择一款专业的文件摆渡…

SecureCRT v9.5.2 for Mac SSH终端操作工具

SecureCRT v9.5.2 for Mac SSH终端操作工具 安装 介绍 SecureCRT Mac是一款SSH终端工具,为计算专业人士提供高级会话管理工具。也是一个功能强大且值得信赖的基于GUI的SHH和Telnet客户端,以及旨在提高工作效率并简化重复任务的终端仿真器。借助SecureCRT mac版的帮助,您可以…

Gitlab流水线配置

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文流水线的流程是,提交代码后,gitlab会检测项目根目录里的.github-ci.yml文件,根据文件中的流水线自动构建,配置文件格式正确性可以在gitlab进行文件校验,格式使用yaml文件格式,一个yaml文件就是一个流水线,里面会…

验证表单输入:必填域

问题 希望确保必须为一个表单元素提供一个值。例如,希望保证一个文本框不为空。 解决方案 使用filter_has_var()查看这个元素在相应的输入数组中是否存在。 严格表单验证 // 检查POST请求中是否存在first_name字段,并且这个字段的长度大于0 if(!(filter_has_var(INPUT_POST, …