Java排序算法之堆排序如何实现
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍了Java排序算法之堆排序如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二叉堆是完全二叉树或者是近似完全二叉树
千家信息网最后更新 2025年11月10日Java排序算法之堆排序如何实现堆排序步骤
这篇文章主要介绍了Java排序算法之堆排序如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性︰
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
任意节点的值都大于其子节点的值--大顶堆(最后输出从小到大排)
任意节点的值都小于其子节点的值---小顶堆(最后输出从大到小排)
堆排序步骤
1.堆化,反向调整使得每个子树都是大顶或者小顶堆(建堆)
2.按序输出元素∶把堆顶和最末元素对调,然后调整堆顶元素(排序)
堆排序代码实现(大顶堆)
public class HeapSort { private static void heapSort(int[] arr) { // 构造初始堆(大顶堆),从第一个非叶子节点开始调整,左右孩子节点中较大的交换到父节点中 for (int i = arr.length / 2 - 1; i >= 0; i--) { heapAdjust(arr, i, arr.length); } // 调整堆结构,交换堆顶元素与末尾元素 for (int j = arr.length - 1; j > 0; j--) { swap(arr, 0, j);// 将堆顶元素与末尾元素进行交换 heapAdjust(arr, 0, j);// 重新对堆进行调整 } } private static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } // 调整大顶堆 private static void heapAdjust(int[] arr, int i, int len) { int temp = arr[i], index = 2 * i + 1; while (index < len) { if (index + 1 < len && arr[index] < arr[index + 1]) {// 如果左子结点小于右子结点,index指向右子结点 index += 1; } if (arr[index] > temp) {// 如果子节点大于父节点,将子节点值赋给父节点 arr[i] = arr[index]; i = index; index = 2 * i + 1; } else { break; } } arr[i] = temp; } public static void main(String[] args) { int[] arr = {1,28,3,21,11,7,6,18}; heapSort(arr); System.out.println(Arrays.toString(arr)); }}时间复杂度:O(nlogN)
感谢你能够认真阅读完这篇文章,希望小编分享的"Java排序算法之堆排序如何实现"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
节点
排序
元素
调整
篇文章
子树
输出
算法
末尾
结点
复杂
最小
较大
从小到大
个子
从小
代码
价值
兴趣
叶子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全和信息化的建议
u9服务器的端口映射
网络安全防范情况
广州火舞软件开发有限公司
如何查看机房网络安全
我们为什么学习车载网络技术
姜林枫 数据库原理与应用技术
党媒网络安全
抖音数据库怎么使用
软件开发企业主营业务收入
荡神志下载软件开发
网络安全不加文字的小报
航科软件无法连接数据库
电脑硬盘有个数据库
软件开发方案与实施安排
孝感互联网科技有限公司
方舟生存进化加入线上服务器闪退
ntp服务器命令
校园网络安全事故
广东数据库培训机构
数据库代理创建失败
湖南工业大学图书馆数据库
登录服务器安全设置
数据更新是数据库操作的核心
陈肇雄 网络安全
结构数据库
快手招聘软件开发
沈阳联想服务器
5g带来的网络安全吗
表格锁定两个条件引数据库