Java 实现堆排序(大跟堆、小根堆)
发布日期:2021-06-27 04:25:04
浏览次数:7
分类:技术文章
本文共 1485 字,大约阅读时间需要 4 分钟。
public class HeapSort { public static void buildHeap(int[] nums){ int N = nums.length; for(int i=N/2-1;i>=0;i--){ // adjustMaxHeap(nums,i); adjustMinHeap(nums,i); } } public static void adjustMaxHeap(int[] nums,int parent){ int largestIndex = parent; int leftIndex = parent * 2 + 1; int rightIndex = leftIndex + 1; if(leftIndex < nums.length && nums[largestIndex] < nums[leftIndex]){ largestIndex = leftIndex; } if(rightIndex < nums.length && nums[largestIndex] < nums[rightIndex]){ largestIndex = rightIndex; } if(largestIndex != parent){ int tmp = nums[parent]; nums[parent] = nums[largestIndex]; nums[largestIndex] = tmp; adjustMaxHeap(nums,largestIndex); } } public static void adjustMinHeap(int[] nums,int parent){ int minIndex = parent; int leftIndex = parent * 2 + 1; int rightIndex = leftIndex + 1; if(leftIndex < nums.length && nums[minIndex] > nums[leftIndex]){ minIndex = leftIndex; } if(rightIndex < nums.length && nums[minIndex] > nums[rightIndex]){ minIndex = rightIndex; } if(minIndex != parent){ int tmp = nums[parent]; nums[parent] = nums[minIndex]; nums[minIndex] = tmp; adjustMinHeap(nums,minIndex); } }}
转载地址:https://blog.csdn.net/weixin_42166320/article/details/108240555 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月24日 22时05分05秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
select下拉框分组展示插件的使用--(select-mania插件的使用)
2019-04-30
Java Lambda表达式的应用--Stream API操作集合框架
2019-04-30
solr的使用详解
2019-04-30
Myslq连接(JDBC)url属性的参数的设置
2019-04-30
关于Spring MVC与前端的交互
2019-04-30
大厂经典面试题:Redis为什么这么快?
2019-04-30
Android之Retrofit基本用法篇
2019-04-30
Netty与网络协议资料整理
2019-04-30
Golang 逃逸分析
2019-04-30
golang实现大数据量文件的排序
2019-04-30
golang中的time包
2019-04-30
2019NOIP D4题 加工领奖
2019-04-30
2021.5.19 JS高级第二天
2019-04-30
啊沙发沙发
2019-04-30
SpringBoot内置Tomcat配置参数
2019-04-30
局部加权回归
2019-04-30
Mysql 入门
2019-04-30
linux 查看文件夹权限
2019-04-30
linux tar 备份
2019-04-30