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

算法堆排序记录

【算法】排序算法之堆排序 - 知乎

应用场景:获取第n个大或者小的数

操作步骤:

1、将数组构造成堆
2、调整根节点为最大堆

        ->倒序对每个根节点执行最大化

        ->根节点最大化过程中如果发生交换,需要保证子节点也为最大堆(执行最大堆)

class Solution {public int findKthLargest(int[] nums, int k) {int heapSize = nums.length;buildMaxHeap(nums, heapSize);for (int i = nums.length - 1; i >= nums.length - k + 1; --i) {swap(nums, 0, i);--heapSize;maxHeapify(nums, 0, heapSize);}return nums[0];}public void buildMaxHeap(int[] a, int heapSize) {for (int i = heapSize / 2 - 1; i >= 0; --i) {maxHeapify(a, i, heapSize);} }public void maxHeapify(int[] a, int i, int heapSize) {int l = i * 2 + 1, r = i * 2 + 2, largest = i;if (l < heapSize && a[l] > a[largest]) {largest = l;} if (r < heapSize && a[r] > a[largest]) {largest = r;}if (largest != i) {swap(a, i, largest);maxHeapify(a, largest, heapSize);}}public void swap(int[] a, int i, int j) {int temp = a[i];a[i] = a[j];a[j] = temp;}
}

相关文章:

  • 1022 Digital Library
  • 【ROS2】行为树 BehaviorTree(五):详细学习端口和黑板
  • 项目集管理汇报报告 (范本)
  • 什么时候触发full GC(发生场景)
  • Snipaste免费版安装教程包含下载、安装、使用(附安装包)
  • Tmi-clnet:从影像学、临床和放射学数据融合判断慢性肝病预后的三模态相互作用网络——医学图像论文学习,论文源码下载
  • 远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?
  • 块存储、文件存储和对象存储的特点、应用场景及区别
  • load_summarize_chain ,load_qa_chain 是什么
  • MCP服务,阿里云百炼,Cline,mysql-mcp-server,MCP通信原理
  • Kotlin协程之异常处理(launch和async的异常处理机制详解)
  • TinyPro 1.2.0 正式发布:增加综合搜索,解决数据筛选难题,后端单测覆盖率再提升!
  • AOSP14 Launcher3——最近任务TaskViewSimulator详解
  • WPS JS宏编程教程(从基础到进阶)-- 第八部分:字符串技术与WPS结合应用
  • AI应用开发之扣子第一课-夸夸机器人
  • 《Vue3学习手记2》
  • SiC JFET Cascode运行原理
  • 深度学习占用大量内存空间解决办法
  • RVOS-7.实现抢占式多任务
  • 根据关键字搜索日志内容,常用的Linux命令
  • 一季度工业对宏观经济增长的贡献率达36.3%
  • 9部门发文促进家政服务消费扩容升级
  • 恒大汽车接获港交所复牌指引,还未披露公司2024年年报
  • 俄最高法宣布解除针对阿富汗塔利班的禁令
  • 农文旅项目投资1700万后被告知是禁养区?南京浦口通报
  • 政策助力破局,4岁罕见病患儿在上海注射国内未上市进口药