package Heapsort;

public class TestMain
{
/**
* 调整堆
* @param array 数组
* @param i 调整的元素i
* @param length 堆元素个数
*/
public static void adaptationArray(int[] array,int i, int length)
{
// 当前元素
int cur = i;
while(2*cur+2<=length)
{
int curValue = array[cur];
int leftValue = array[2*cur+1];
int maxIndex;
if(2*cur+3<=length) //有右孩子节点
{
maxIndex = array[2*cur+2]>leftValue?2*cur+2:2*cur+1;
}
else
{
maxIndex = 2*cur+1;
}
//当前值大于左右节点值,则结束
if(curValue>=array[maxIndex])
{
break;
}
array[cur] = array[maxIndex];
array[maxIndex] = curValue;
cur = maxIndex;
}
}
/**
* 初始化最大堆
* @param array
*/
public static void initArray(int[] array)
{
//从start位置到0
int start = array.length/2-1;
for(;start>=0;start--)
{
adaptationArray(array,start,array.length);
}
}
/**
* 排序
* @param array
*/
public static void sortArray(int[] array)
{
//初始化最大堆
initArray(array);
int start = array.length-1; //依次将首元素与倒数的元素交换位置
for(;start>0;start--)
{
int temp = array[0];
array[0] = array[start];
array[start] = temp;
adaptationArray(array,0,start);
}
}

public static void main(String[] args)
{
int[] array ={20,23,6,7,3,4,5,100,29,1};
sortArray(array);
for(int i:array)
{
System.out.print(i+",");
}
}
}

转载于:https://www.cnblogs.com/hzw-hym/p/4412220.html

堆排序示例-java相关推荐

  1. HIDL示例-JAVA服务创建-Client验证-Android10.0 HwBinder通信原理(四)

    摘要:本节主要来讲解Android10.0 JAVA层的HIDL服务创建和JAVA层的Client验证 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...

  2. 堆排序算法java左程云_堆排序算法以及JAVA实现

    堆的定义如下: n个元素的序列{k0,k1,...,ki,-,k(n-1)}当且仅当满足下关系时,称之为堆. " ki<=k2i,ki<=k2i+1;或ki>=k2i,ki ...

  3. JAVA发送手机短信,httpclient短信发送接口示例(java)

    httpclient短信发送接口示例(java),可用于直接用电脑发送短信,可根据实际情况,与联通移动公司洽谈接口,完成网上发送短信功能,如需jar包,可向联通移动公司项目部沟通. package c ...

  4. 顺丰api相关示例 - java版本(带打印)

    本来一个简简单单的调用api实现的东西根本没必要单独写一篇博客. ....但是!这个顺丰坑实在是太多了!!!让我都有点想骂人了都 实在忍不住吐槽几点: 丰桥的客服qq群,问了一天没人搭理我,真是应了那 ...

  5. 堆排序java实例_堆排序(示例代码)

    前言:网上有很多堆排序的案例,我只想写自己堆排序. 一:堆结构 即:一个父节点最多只能有两个子节点(可以没有),如下图 图1        图2           图3       图4 二: 数组 ...

  6. 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)

    转载:http://blog.csdn.net/pzhtpf/article/details/7559943 3.简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换 ...

  7. java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...

    本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...

  8. 排序算法(二)--堆排序(JAVA)

    堆的一个很重要的应用就是堆排序,和快速排序一样,堆排序的时间复杂度也是O(NlgN) 堆排序的实现思路一: 1.创建小根堆 2.每次删除顶部元素并将顶部元素输出(删除的函数中有调整的过程,每次调整) ...

  9. JAVA中常用接口的介绍及使用示例 java lang Comparable

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

最新文章

  1. linux系统性能监控命令uptime(六)
  2. C/C++基础面试集锦(一)strcpy、memcpy
  3. 最简单的composer 包 使用
  4. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试
  5. 总结系列_9(Linux下常见使用总结,续...)
  6. 信息学奥赛一本通(2061:【例1.2】梯形面积)
  7. linux下shell程序(一)
  8. wireshark常用选项与功能总结【10分钟成为抓包大师】
  9. Coursera ML 逻辑回归与正则化
  10. oracle设置口令期限,[20180316]改变oracle用户口令时限.txt
  11. [Pyecharts 可视化] B站推荐视频分析
  12. 【高项】第6章 项目进度管理【知识点精华笔记】
  13. Html怎么判断ie5,css怎样判断IE浏览器?
  14. 原生php写简单的聊天室
  15. 顺丰快递:请签收Netty灵魂十连问
  16. 护照 MRZ码编码规则
  17. 区块链Fabric 技术架构和交易流程
  18. pictureBox用法
  19. VMware Workstation Pro16 的下载与安装
  20. 阿里巴巴云原生技术公开课文案:课时 1:第一堂“云原生”课(转载只为自学)

热门文章

  1. php 重新载入类文件夹,php-如何配置Behat从应用程序特定文件夹自动加载类
  2. 威纶通宏开机后使用初始化宏指令_【操作系统】我们按下电脑开机键的背后发生了什么?...
  3. 图像在计算机中通过什么方式表示_万物皆可“计算机视觉”
  4. 操作系统学习2:操作系统的发展和概览
  5. Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
  6. ES6 let和const 命令
  7. iOS 图片处理-图片旋转和裁剪
  8. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
  9. VUE input唤起键盘 底部固定的标签被顶上去解决办法
  10. 微信小程序限制当前位置和目的地的距离