news 2026/8/21 7:20:35

堆排序--自学笔记

作者头像

张小明

前端开发工程师

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/8/21 16:15:22

Python中的数据结构(容器)之列表(list)

Python中的数据结构&#xff08;容器&#xff09;之列表&#xff08;list&#xff09; 容器用于存储多个数据&#xff0c;是基础语法的核心组成&#xff0c;常用的有 4 种&#xff1a; 列表&#xff08;list&#xff09;—— 有序、可变、可重复字典&#xff08;dict&#xff0…

作者头像 李华
网站建设 2026/8/21 4:17:13

NetActuate扩建丹佛数据中心提升混合云与灾备能力

来源&#xff1a;维度网-全球简讯 全球基础设施与网络服务提供商NetActuate宣布&#xff0c;已完成对其位于美国丹佛的数据中心的重要升级。此次扩建显著增加了该中心的网络、云计算与算力资源容量&#xff0c;目的是满足市场对混合云与灾备需求的持续增长。 NetActuate表示&a…

作者头像 李华
网站建设 2026/8/21 12:52:01

ModbusRTU报文结构完整指南(主从模式)

深入理解ModbusRTU&#xff1a;从报文结构到主从通信实战 在工业现场&#xff0c;你是否曾遇到过这样的场景&#xff1f; 一台PLC迟迟收不到电表的数据&#xff0c;HMI界面上电压值一直显示为0&#xff1b; 或是变频器的启停指令发出去后毫无反应&#xff0c;排查半天才发现…

作者头像 李华
网站建设 2026/8/20 9:55:51

从零实现NX二次开发程序部署:DLL注册与调用详解

从零构建稳定可靠的NX二次开发部署&#xff1a;深入理解DLL注册与调用机制你有没有遇到过这样的场景&#xff1f;辛辛苦苦写了一个NX自动化工具&#xff0c;功能测试完美&#xff0c;结果一换台电脑就“找不到入口”&#xff1b;或者每次启动NX都得手动加载DLL&#xff0c;同事…

作者头像 李华