堆排序java实现
来源:互联网 发布:枪林弹雨刷枪软件 编辑:程序博客网 时间:2024/05/22 08:17
java代码
package cn.sunline.test;/** * @author huangzhongjie * */public class Heap {public static void buildHeap(int[] arr) {int iRoot = arr.length / 2 - 1;for (; iRoot >= 0; iRoot--) {moveElement(arr, iRoot, arr.length);}}public static void moveElement(int[] arr, int iRoot, int iLength) {int iLeft = iRoot * 2 + 1;int iRight = iRoot * 2 + 2;int iMaxInLeftRight = 0;if (iLeft > iLength - 1) {} else if (iLeft == iLength - 1) {iMaxInLeftRight = iLeft;if (arr[iLeft] > arr[iRoot]) {swap(arr, iRoot, iMaxInLeftRight);moveElement(arr, iMaxInLeftRight, iLength);}} else {iMaxInLeftRight = arr[iLeft] > arr[iRight] ? iLeft : iRight;if (arr[iMaxInLeftRight] > arr[iRoot]) {swap(arr, iRoot, iMaxInLeftRight);moveElement(arr, iMaxInLeftRight, iLength);}}}public static void swap(int[] arr, int i, int j) {int iTemp;iTemp = arr[i];arr[i] = arr[j];arr[j] = iTemp;}public static int[] sort(int[] arr) {buildHeap(arr);int[] arrResult = new int[arr.length];for (int i = 0; i < arr.length; i++) {arrResult[i] = arr[0];arr[0] = arr[arr.length - 1 - i];moveElement(arr, 0, arr.length - 1 - i);}return arrResult;}public static void main(String[] args) {int[] arr = { 12, 36, 24, 85, 47, 30, 53, 91 };int[] arrResult = sort(arr);for (int x : arrResult) {System.out.print(x+ " ");}}}
0 0
- 堆排序Java实现
- 堆排序-java实现
- 堆排序 Java实现
- java实现堆排序
- java实现堆排序
- Java实现堆排序
- java实现堆排序
- JAVA实现堆排序
- java实现堆排序
- java 实现堆排序
- Java实现堆排序
- Java实现堆排序
- Java实现堆排序
- java实现堆排序
- JAVA 堆排序实现
- 堆排序java实现
- java堆排序实现
- java实现堆排序
- JS模块化工具requirejs教程(一)
- Ambari学习10_ambari安装过程Registration with the server failed和[Errno 256] No more mirrors to try
- 【cocos2d-js官方文档】十七、事件分发机制
- 42.淘宝商城中的缓存(hasmap)
- solr在java中的使用
- 堆排序java实现
- 汉字与拼音互转的工具类
- 08 面向对象二
- 14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
- 关于大学职业规划的分享
- 读《TCP/IP详解》第10章:动态选路协议
- delete运算符(删除数组)
- TIOBE Index for November 2016(2016年11月编程语言排行榜)
- android 根据地址获取经纬度