堆排序
2015-09-22 12:05
197 查看
package leetcode.sort; import java.util.Arrays; import java.util.Random; /** * HeapSort * Created by blank on 15/8/12. */ public class HeapSort { public static void main(String[] args) { int[] arr = new int[100000]; for (int i = 0; i < 100000; i++) { arr[i] = new Random().nextInt(100000000); } int[] copy = arr.clone(); heapSort(arr); Arrays.sort(copy); for (int i = 0; i < 100000; i++) { if (arr[i] != copy[i]) { System.out.println("wrong"); } } System.out.println("right"); } static void heapSort(int[] array) { if (array == null || array.length <= 1) { return; } for (int i = (array.length - 1) / 2; i >= 0; i--) { siftDown(array, i, array.length); } for (int i = array.length - 1; i >= 0; i--) { swap(array, i, 0); siftDown(array, 0, i); } } private static void swap(int[] array, int a, int b) { if (a >= array.length || b >= array.length) { return; } int tmp = array[a]; array[a] = array[b]; array[b] = tmp; } private static void siftDown(int[] array, int root, int hi) { int half = hi >>> 1; while (root < half) { int child = root * 2 + 1; if (child >= hi) { return; } if (child + 1 < hi && array[child + 1] > array[child]) { child++; } if (array[child] < array[root]) { return; } swap(array, root, child); root = child; } } }
相关文章推荐
- ITMS-90535
- Python脚本02 —— 删除以@3x.png为后缀的文件
- NPOI之Excel——合并单元格、设置样式、输入公式
- 一千行MySQL学习笔记(十二)
- Codeforces Round #268 (Div. 1) A. 24 Game 构造
- 定位 - MapKit-自定义大头针
- 归并排序
- JSP教程之使用JavaBean完成业务逻辑的方法
- 07-js正则验证文件后缀名
- hadoop 2.6 完全分布式安装过程及记录 (详细版)
- 正则表达式总结
- hihoCoder1233(2015北京网络赛H题)
- 一千行MySQL学习笔记(十一)
- 数据库的查找
- 读后感 ”一个IT青年北漂四年的感悟(长文慎入)“
- SqlServer数据通过DBLink 同步到Oracle小例 (不积跬步,无以至千里)
- 一千行MySQL学习笔记(十)
- RUBY ON RAILS輸出Hello world
- App工程结构搭建:几种常见Android代码架构分析
- ym——Andorid-15k+的面试题。