package org.myorg.algorithm;

public class HeapSorter {

public static void heapSort(int[] array){

buildHeap(array);//构建堆

int n = array.length;

int i=0;

for(i=n-1;i>=1;i--){

swap(array,0,i);

heapify(array,0,i);

}

}

public static void buildHeap(int[] array){

int n = array.length;//数组中元素的个数

for(int i=n/2-1;i>=0;i--)

heapify(array,i,n);

}

public static void heapify(int[] A,int idx,int max){

int left = 2*idx+1;// 左孩子的下标(如果存在的话)

int right =2*idx+2;// 右孩子的下标(如果存在的话)

int largest = 0;//寻找3个节点中最大值节点的下标

if(leftA[idx])

largest = left;

else

largest = idx;

if(rightA[largest])

largest = right;

if(largest!=idx){

swap(A,largest,idx);

heapify(A,largest,max);

}

}

public static void swap(int[] array,int i,int j){

int temp =0;

temp=array[i];

array[i]=array[j];

array[j]=temp;

}

public static void main(String[] args) {

int[] a = {1,2,3,4,5,6,7,16,9,10,11,12,13,14,15,8};

System.out.println("排序前..........................");

for(int i=0;i

System.out.println(a[i]);

heapSort(a);

System.out.println("排序后..........................");

for(int i=0;i

System.out.println(a[i]);

}

}

堆排序算法的java实现_堆排序算法的JAVA实现相关推荐

  1. 堆排序算法讲解视频java版_堆排序算法的讲解及Java版实现

    堆是数据结构中的一种重要结构,了解了"堆"的概念和操作,可以快速掌握堆排序. 堆的概念堆是一种特殊的完全二叉树(complete binary tree).如果一棵完全二叉树的所有 ...

  2. 排序算法java源代码_排序算法汇总(java实现,附源代码)

    整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟悉一下,以后需要的时候就可以直接过来摘抄了. ...

  3. 匈牙利算法java实现_匈牙利算法(Hungarian Algorithm)

    匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法.换句话说就是,在可以接受的时间内去做匹配. 1. 描述问题 给定2个集合A和B,然后将AB中的元素完成一个连线.(这不就是小时候的连线题么 ...

  4. java 矩阵求逆_详解用java描述矩阵求逆的算法

    今天很开心把困扰几天的问题解决了,在学习线性代数这门课程的时候.想通过程序实现里面的计算方法,比如矩阵求逆,用java代码该如何描述呢? 首先,咱们先用我们所交流语言描述一下算法思路: 1.求出一个矩 ...

  5. java 独木桥_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  6. l bfgs算法java代码_优化算法——拟牛顿法之L-BFGS算法

    一.BFGS算法 BFGS算法的校正公式: 利用Sherman-Morrison公式可对上式进行变换,得到 令 ,则得到: 二.BGFS算法存在的问题 在BFGS算法中.每次都要存储近似Hesse矩阵 ...

  7. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  8. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  9. 常用的java虚拟机_带你了解 JAVA虚拟机 面试必备

    Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有 些区域则是依赖 ...

  10. opencv java库_【OpenCV】java资源

    前些日子做了个数字图像识别的小项目,用到了 java 的 OpenCV 库,今天把搜集到的资源整理分享出来. 1.教程 易百教程 文档 OpenCV中文网站 2.方法调用 图像处理之常见二值化方法汇总 ...

最新文章

  1. 实现通用人工智能还要多久?Hinton与AlphaGo之父这样回答
  2. Windows IIS7 下安装配置 PHP7.0
  3. 关于举办第十六届全国大学生 智能汽车竞赛的通知
  4. Gluster 常用命令
  5. Ros学习调试——rqt_console
  6. CodeForces - 1373D Maximum Sum on Even Positions(最大连续子段和)
  7. CCNA-第三篇-OSI模型-上
  8. windows2008R2+IIS部署python Django的web环境
  9. 【网络】SSH本地/远程/动态端口转发
  10. linux uwsgi 非root,nginx – 只能用root运行uwsgi
  11. 解决启动Eclipse后提示’Running android lint’错误的问题
  12. 【bzoj2806】[Ctsc2012]Cheat 广义后缀自动机+二分+单调队列优化dp
  13. 自己动手写cpu pdf_教你自己动手组装电脑(第一篇:CPU)
  14. Redhat7系统root用户密码破解
  15. 自抗扰控制的入门学习(一)—— 前言
  16. Android解决“此用户无法使用开发者选项“异常
  17. 交换机和集线器的区别
  18. DRM框架梳理-- dumb-buffer的分配和绑定到crtc
  19. 服务化系统容量评估和性能保障
  20. 《幼儿园门禁管理系统可行性研究报告》

热门文章

  1. Redis 很屌,不懂使用规范就糟蹋了
  2. 图算法在斗鱼反作弊中的实践
  3. 还不懂Docker?一个故事安排的明明白白!
  4. 28岁硕士女程序员想分手!对象专科学历,北京土著,失业3个月找不到工作!遭网友群嘲!...
  5. 想知道Java程序如何才能提高性能吗?
  6. Mysql性能优化实践
  7. 四旋翼———控制系统
  8. 一次打流过程的优化反思(iperf3的灵活运用)
  9. UI自动化测试工具White简介以及使用经验总结(一)
  10. OSSIM系统——mysql的使用