Java排序算法之堆排序如何实现
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Java排序算法之堆排序如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二叉堆是完全二叉树或者是近似完全二叉树
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网科技
广州紫鲸互联网科技有限公司
腾讯阿里互联网科技
电子科技大学互联网
无线互联网科技
互联网高科技企业
科技互联网创业计划书
互联网前沿科技
互联网科技公司名称
人人互联网科技是培训
老年人脱离互联网科技的作文
北京三清互联网科技
中国科技互联网公司收入
重庆威客帮互联网科技
互联网金融中的现代科技
互联网科技大奖都有哪些公司
杭州披云加互联网科技有限公司
珠海东科互联网科技有限公司
平安好医生打造互联网科技医疗
瑞安市蟠桃会互联网科技有限公司
云信互联网科技有限公司
新华互联网科技学校
互联网科技卖菜
互联网前沿科技
安控科技rtu产品工业互联网
互联网教育科技公司vipkid
互联网校园科技培训
互联网科技与管理
上海钢联属于互联网科技股吗
华人运通互联网科技公司