news 2026/4/17 18:43:06

堆排序--自学笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
堆排序--自学笔记

堆排序

学习目标

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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 18:46:57

STM32工程中Keil生成Bin文件超详细版说明

STM32工程中Keil生成Bin文件&#xff1a;从原理到实战的完整指南你有没有遇到过这样的场景&#xff1f;代码编译通过&#xff0c;调试也没问题&#xff0c;但当你把固件交给生产部门或准备做OTA升级时&#xff0c;对方却说&#xff1a;“我们需要的是.bin文件&#xff0c;不是.…

作者头像 李华
网站建设 2026/4/6 9:21:51

springboot基于Java的大学校园水电管理系统的设计与实现

前言 基于Java的大学校园水电管理系统通过信息化手段提高了水电管理的效率和准确性&#xff0c;优化了资源配置&#xff0c;提升了服务质量。未来&#xff0c;可以进一步完善系统的功能&#xff0c;如增加智能预警功能、优化用户界面等&#xff0c;以更好地满足用户需求。同时&…

作者头像 李华
网站建设 2026/4/17 11:53:25

HardFault_Handler问题定位在PLC系统中的应用与优化

硬故障现场还原&#xff1a;如何让PLC在崩溃后“说出”真相你有没有遇到过这样的场景&#xff1f;一台运行在工厂产线上的PLC&#xff0c;突然无故停机。现场操作员重启设备后系统恢复正常&#xff0c;但几天后同样的问题再次出现——没有报警代码、没有日志记录、调试器也无法…

作者头像 李华
网站建设 2026/4/18 0:55:12

手把手教程:在传送带控制中使用vTaskDelay

用好一个vTaskDelay&#xff0c;让传送带控制更稳、更省、更聪明你有没有遇到过这种情况&#xff1a;写了个简单的电机启停逻辑&#xff0c;用delay_ms(5000)让它运行5秒&#xff0c;结果发现屏幕卡住了、通信断了、传感器也没法及时响应&#xff1f;这在嵌入式开发中太常见了。…

作者头像 李华
网站建设 2026/4/18 8:46:00

AI论文辅助工具排行榜:8个网站功能对比,降重与写作兼具

在众多AI论文工具中&#xff0c;选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具&#xff0c;重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈&#xff0c;确保客观实用性。以下是简要排行表&#xff08;基于效率、准确性和易用性&…

作者头像 李华