堆排序示例-java
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相关推荐
- HIDL示例-JAVA服务创建-Client验证-Android10.0 HwBinder通信原理(四)
摘要:本节主要来讲解Android10.0 JAVA层的HIDL服务创建和JAVA层的Client验证 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...
- 堆排序算法java左程云_堆排序算法以及JAVA实现
堆的定义如下: n个元素的序列{k0,k1,...,ki,-,k(n-1)}当且仅当满足下关系时,称之为堆. " ki<=k2i,ki<=k2i+1;或ki>=k2i,ki ...
- JAVA发送手机短信,httpclient短信发送接口示例(java)
httpclient短信发送接口示例(java),可用于直接用电脑发送短信,可根据实际情况,与联通移动公司洽谈接口,完成网上发送短信功能,如需jar包,可向联通移动公司项目部沟通. package c ...
- 顺丰api相关示例 - java版本(带打印)
本来一个简简单单的调用api实现的东西根本没必要单独写一篇博客. ....但是!这个顺丰坑实在是太多了!!!让我都有点想骂人了都 实在忍不住吐槽几点: 丰桥的客服qq群,问了一天没人搭理我,真是应了那 ...
- 堆排序java实例_堆排序(示例代码)
前言:网上有很多堆排序的案例,我只想写自己堆排序. 一:堆结构 即:一个父节点最多只能有两个子节点(可以没有),如下图 图1 图2 图3 图4 二: 数组 ...
- 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
转载:http://blog.csdn.net/pzhtpf/article/details/7559943 3.简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换 ...
- java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...
本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...
- 排序算法(二)--堆排序(JAVA)
堆的一个很重要的应用就是堆排序,和快速排序一样,堆排序的时间复杂度也是O(NlgN) 堆排序的实现思路一: 1.创建小根堆 2.每次删除顶部元素并将顶部元素输出(删除的函数中有调整的过程,每次调整) ...
- JAVA中常用接口的介绍及使用示例 java lang Comparable
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...
最新文章
- linux系统性能监控命令uptime(六)
- C/C++基础面试集锦(一)strcpy、memcpy
- 最简单的composer 包 使用
- Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试
- 总结系列_9(Linux下常见使用总结,续...)
- 信息学奥赛一本通(2061:【例1.2】梯形面积)
- linux下shell程序(一)
- wireshark常用选项与功能总结【10分钟成为抓包大师】
- Coursera ML 逻辑回归与正则化
- oracle设置口令期限,[20180316]改变oracle用户口令时限.txt
- [Pyecharts 可视化] B站推荐视频分析
- 【高项】第6章 项目进度管理【知识点精华笔记】
- Html怎么判断ie5,css怎样判断IE浏览器?
- 原生php写简单的聊天室
- 顺丰快递:请签收Netty灵魂十连问
- 护照 MRZ码编码规则
- 区块链Fabric 技术架构和交易流程
- pictureBox用法
- VMware Workstation Pro16 的下载与安装
- 阿里巴巴云原生技术公开课文案:课时 1:第一堂“云原生”课(转载只为自学)
热门文章
- php 重新载入类文件夹,php-如何配置Behat从应用程序特定文件夹自动加载类
- 威纶通宏开机后使用初始化宏指令_【操作系统】我们按下电脑开机键的背后发生了什么?...
- 图像在计算机中通过什么方式表示_万物皆可“计算机视觉”
- 操作系统学习2:操作系统的发展和概览
- Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
- ES6 let和const 命令
- iOS 图片处理-图片旋转和裁剪
- 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
- VUE input唤起键盘 底部固定的标签被顶上去解决办法
- 微信小程序限制当前位置和目的地的距离