Java排序算法之堆排序如何实现
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了Java排序算法之堆排序如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二叉堆是完全二叉树或者是近似完全二叉树
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
大海战2为什么进不去服务器
华为服务器存储管理软件
cod12服务器搭建
北沃软件开发
软件开发注重电脑什么性能
腾讯云如何初始化数据库
交通网络安全计划
染色体数据库在哪里查
网络安全工作压力
人事部数据库管理专业
小学生关于网络安全资料
米尔斯NBA数据库
软件开发行业风险分析与对策
数据库如何同时升序降序
2021网络安全发言
数据库查询语句降序
抖音账号解锁服务器错误
数据库人员信息表
广电网络技术岗工资低吗
raid0 服务器不认
创魔一个服务器可以有几个部落
中文及外文数据库对比
云南创新软件开发市场报价
数据库技术考试难吗
网络安全防线演练
数据库查询表格的命令
电脑怎么连接到服务器
数据网络安全证有用吗
企业锁数据库的问题
万国软件开发深圳公司