堆排序
2015-09-13 19:43
330 查看
public class Main { public static void main(String[] args) { int[] arr = {0, 2, 1, 5, 8, 2, 4, 3, 7, 6, 5}; heapSort(arr, arr.length - 1); for(int i = 1; i < arr.length; i++) { System.out.print(arr[i] + " "); } } public static void heapSort(int[] arr, int size) { initHeap(arr, size); for(int i = size; i >= 1; i--) { int temp = arr[1]; arr[1] = arr[i]; arr[i] = temp; adjustHeap(arr, i - 1, 1); } } public static void initHeap(int[] arr, int size) { int i; for(i = size / 2; i >= 1; i--) { adjustHeap(arr, size, i); } } public static void adjustHeap(int[] arr, int size, int i) { int lchild = 2 * i; int rchild = 2 * i + 1; int max = i; if(i <= size / 2) { if(lchild <= size && arr[lchild] > arr[max]) { max = lchild; } if(rchild <= size && arr[rchild] > arr[max]) { max = rchild; } if(max != i) { int temp = arr[i]; arr[i] = arr[max]; arr[max] = temp; adjustHeap(arr, size, max); } } } }
1、构建初始大根堆很重要
2、索引从1开始
3、if(i <= size/2)!!!
相关文章推荐
- 【HNOI2010】【BZOJ1997】Planar
- mysql的对表的增删改查
- android 自定义圆角imageview
- NYOJ-14 会场安排问题
- JavaNIO:非阻塞NIO通信及相关对象讲解
- 2.4-nginx禁止指定user_agent
- 我的心情
- <Android Framework 之路>Android5.1 Camera Framework(四)——框架总结
- 【MyEclipse】MyEclipse使用总结——MyEclipse10安装SVN插件
- HDU 5443 2015.9.13长春网络赛G题
- Android5.1 Camera Framework(四)——框架总结
- POJ1250解题报告
- drools入门(二)
- JQuery中$.ajax()方法参数详解
- Strurts2下导入Excel文件数据
- C 语言中的指针和内存泄漏
- hdu 5441 Travel(并查集)
- c++求数组长度
- 对socket的理解
- 读文件