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

堆排序--自学笔记

堆排序

学习目标

1.堆结构

2.堆排序思想

3.代码实现

4.复杂度分析

1.堆结构

定义

符合以下两个条件之一的完全二叉树

  • 根节点的值 >= 子节点的值,称为最大堆,或大顶堆
  • 根节点的值 <= 子节点的值,称为最小堆,或小顶堆

2.堆排序思想

3.代码实现

/** * 堆排序 * @param arr */publicstaticvoidheapSort(int[]arr){//堆排序第一步:初始化堆//这里选择构建大顶堆:从小到大排序buildMaxHeap(arr);//取数字,调整 循环//取出堆顶数字:与数组末尾元素交换//数组长度-1for(inti=arr.length-1;i>0;i--){swap(arr,0,i);//i也可以代表数组中可用的数字maxHeapify(arr,0,i);}}/** * 初始化堆(大顶堆) * @param arr */privatestaticvoidbuildMaxHeap(int[]arr){//构建堆第一步:从最后一个非叶子节点开始进行三人组比赛//也可以从arr.length - 1 开始,但它没有左右子节点,也会运算到arr.length / 2 - 1for(inti=arr.length/2-1;i>=0;i--){//大顶堆化maxHeapify(arr,i,arr.length);}}/** * 大顶堆化 * @param arr * @param i * @param heapSize */privatestaticvoidmaxHeapify(int[]arr,inti,intheapSize){//找到左右子节点intl=2*i+1;intr=2*i+2;intlargest=i;//不能越界if(l<heapSize&&arr[l]>arr[largest]){largest=l;}if(r<heapSize&&arr[r]>arr[largest]){largest=r;}if(largest!=i){//需要发生交换swap(arr,i,largest);//发生了交换 则交换下来的元素需要继续下沉maxHeapify(arr,largest,heapSize);}}privatestaticvoidswap(int[]arr,inta,intb){inttemp=arr[a];arr[a]=arr[b];arr[b]=temp;}

4.复杂度分析

215. 数组中的第K个最大元素 - 力扣(LeetCode)

http://www.jsqmd.com/news/125538/

相关文章:

  • 8个AI论文生成平台测评,降重与写作功能深度解析
  • Java毕设项目:基于springboot的旧物回收商城系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 基于SpringBoot+Spark+vue的在线广告推荐系统
  • 有限动画状态机FSM
  • 【国产 OS 顶流实战】KylinOS V10 等保 2.0 三级合规 + MES 系统国产化迁移全案
  • GEO优化公司优质推荐:这六家企业技术扎实,长期效果经得起考验 - 品牌企业推荐师(官方)
  • 8款AI论文生成工具横向评测,降重与写作能力全面对比
  • Vue3_计算属性
  • KylinOS V10 等保 2.0 三级合规 + MES 系统国产化迁移全案
  • Java基于springboot+vue的社区残障人士服务平台系统
  • 2025客户管理系统选型指南:14 款国内外CRM厂商产品能力深度对比
  • Python中的数据结构(容器)之列表(list)
  • openmv与stm32硬件连接图解:一文说清引脚对接
  • PaperzzAI毕业论文写作:不是“代写”,是你的学术“外挂大脑”——让毕业季从“肝论文”变成“赢人生”
  • 树莓派5首次使用:操作指南与避坑建议
  • ESP32中RMT外设替代PWM:WS2812B时序控制新思路
  • 手把手教你完成四层板PCB绘制与电源分割操作
  • 2025 AI 视频生成大横评:Sora、可灵、Luma、Runway 谁才是真正的“电影级”导演?
  • Paperzz AI PPT:把 “做 PPT 的苦”,变成 “选模板的爽”
  • STM32工程中Keil生成Bin文件超详细版说明
  • I2C读写时序基础:一文说清起始与停止条件
  • 工业热成像数据增强不足 后来才知道加高斯噪声模拟设备老化
  • CC2530运行ZStack时的中断处理机制解析
  • Java基于springboot+vue的毕业生离校管理系统的设计与实现
  • ‌预制构件市场“硝烟”再起?从中交项目到中核华兴,近期重庆地区采购结果密集公告
  • 运满满司机端【一口价】信息提取软件
  • Packet Tracer使用教程:OSPF基础配置图解说明
  • Paperzz AI PPT:别再熬夜调模板了!10 分钟搞定答辩 / 汇报 PPT,颜值专业度双拉满
  • 外企面试必备问答逐字稿整理
  • 基于 FRP + 云服务器实现安全可靠的远程桌面连接