package secondChapter;

import java.util.Random;

public class HeapSort {

    private static int AHeapSize;

    public static void main(String[] args) {

        HeapSort hs = new HeapSort();
int[] A = new int[10];
//产生随机数组
for(int i=0;i<A.length;i++){
A[i] = hs.generateRandomInt(50);
}
System.out.print("Original array:");
for (int i = 0; i < A.length; i++) {
System.out.print(A[i]+" ");
}
System.out.println(); hs.heap_sort(A); System.out.print("Sorted array: ");
for (int i = 0; i < A.length; i++) {
System.out.print(A[i]+" ");
}
} //HEAPSORT过程
public void heap_sort(int[] A) {
AHeapSize = A.length;
build_max_heap(A); System.out.print("build_max_heap: ");
for (int i = 0; i < A.length; i++) {
System.out.print(A[i]+" ");
}
System.out.println(); for(int i=A.length;i>1;i--){
int temp = A[0];
A[0] = A[i-1];
A[i-1] = temp; AHeapSize -= 1;
max_heapify(A,1);
}
} //HUILD-MAX-HEAP过程
public void build_max_heap(int[] A) {
for(int i=A.length/2;i>0;i--){
max_heapify(A,i);
}
} //MAX-HEAPIFY过程
public void max_heapify(int[] A, int i) { //i为 元素下标+1
int l = 2*i;
int r = 2*i+1; int largest;
if(l<=AHeapSize && A[l-1]>A[i-1]){
largest = l;
}else{
largest = i;
}
if(r<=AHeapSize && A[r-1]>A[largest-1]){
largest = r;
}
if(largest!=i){
int temp = A[i-1];
A[i-1] = A[largest-1];
A[largest-1] = temp; max_heapify(A, largest);
}
} private Random rd = new Random();
public int generateRandomInt(int bound) {
return rd.nextInt(bound);
} }

输出结果:

Original array:40 44 11 43 25 0 7 14 34 14
build_max_heap: 44 43 11 40 25 0 7 14 34 14
Sorted array: 0 7 11 14 14 25 34 40 43 44

java语言实现堆排序的更多相关文章

  1. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  2. 读书笔记:《数据结构与算法分析Java语言描述》

    目录 第 3 章 表.栈和队列 3.2 表 ADT 3.2.1 表的简单数组实现 3.2.2 简单链表 3.3 Java Collections API 中的表 3.3.1 Collection 接口 ...

  3. 深度实战玩转算法, Java语言7个经典应用诠释算法精髓

    深度实战玩转算法,以Java语言主讲,通过7款经典好玩游戏,真正将算法用于实际开发,由算法大牛ACM亚洲区奖牌获得者liuyubobobo主讲,看得见的算法,带领你进入一个不一样的算法世界,本套课程共 ...

  4. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  5. Atitit onvif协议获取rtsp地址播放java语言 attilx总结

    Atitit onvif协议获取rtsp地址播放java语言 attilx总结 1.1. 获取rtsp地址的算法与流程1 1.2. Onvif摄像头的发现,ws的发现机制,使用xcf类库1 2. 调用 ...

  6. AVL树原理及实现(C语言实现以及Java语言实现)

    欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. AVL定义 AVL树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...

  7. Java语言中的面向对象特性总结

    Java语言中的面向对象特性 (总结得不错) [课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知 ...

  8. JAVA语言搭建白盒静态代码、黑盒网站插件式自动化安全审计平台

    近期打算做一个插件化的白盒静态代码安全审计自动化平台和黑盒网站安全审计自动化平台.现在开源或半开源做黑盒网站安全扫描的平台,大多是基于python脚本,安全人员贡献python脚本插件增强平台功能.对 ...

  9. 关于Java语言和面向对象记录

    本科时常用的c语言是面向过程的语言,而Java是面向对象的语言 Java语言的11个关键术语 简单性.可移植性.面向对象.分布式.高性能.解释型.健壮性.多线程.安全性.动态性.体系结构中立 面向对象 ...

随机推荐

  1. PHP 时间 date,strtotime ,time计算1970开始的第几天

    首先,需要看你的php时区配置参数 方式1:更改php配置文件,然后从其fast-cgi或者php调用的地方: 方式2:date_default_timezone_set('PRC'); date函数 ...

  2. oracle procedure

    http://www.cnblogs.com/wuhenke/archive/2010/03/20/1690535.html

  3. 如何获取有性能问题的SQL

    1.通过用户反馈获取存在性能问题的SQL.   2.通过慢查日志获取存在性能的SQL.   启动慢查日志 slow_query_log=on   set global slow_query_log=o ...

  4. java发送 get请求

    package com.java.base; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...

  5. numtoyminterval函数——数字转换函数

      numtoyminterval函数——数字转换函数 ----转至51CTO 水滴的博客  语法:NUMTOYMINTERVAL ( n , 'char_expr' )              c ...

  6. RDMA的ibv_post_send() 函数

    函数原型为 int ibv_post_send(struct ibv_qp *qp, struct ibv_send_wr *wr, struct ibv_send_wr **bad_wr); 其中s ...

  7. jQuery绑定以及解除时间方法总结,以及事件触发的方法

     一   off()和on()          $("obj").on(event,[sesect],[data],fn);一般情况下参数只有两个,事件以及事件的处理函数     ...

  8. HDU 4507 吉哥系列故事——恨7不成妻

    需要推下平方和的式子..维护个数,和,平方和. #include<iostream> #include<cstdio> #include<cstring> #inc ...

  9. BZOJ 2763 分层图最短路

    突然发现我不会分层图最短路,写一发. 就是同层中用双向边相连,用单向边连下一层 #include <cstdio> #include <algorithm> #include ...

  10. webApp--cordova 系列1

    1.在node,npm 可用的前提下 npm install -g cordova 大约10分钟后装完,cmd中输入cordova -v  验证是否安装成功 2.cordova项目打包是用ant完成, ...