堆排序
2016-12-06 20:29
274 查看
package heapsort; import java.util.Arrays; public class HS1 { public static void main(String[] args) { int[] A={87,45,78,32,17,65,53,9,63}; BuildHeap(A); System.out.println(Arrays.toString(A)); } public static void BuildHeap(int A[]){ int len=A.length; int index=len-1; int father; for(father=index/2-1;father>=0;father--){//父节点从中间向前面走 AdjustDown(A, father, index);//第二个参数是父节点,第三个是最后一个元素的下标 } for(int i=A.length-1;i>=0;i--){ swap(A,0,i);//将第一个()与最后一个交换位置,然后堆去掉最后一个 AdjustDown(A, 0, i-1); } } public static void swap(int[] A,int a,int b){ int c; c=A[a]; A[a]=A[b]; A[b]=c; } public static void AdjustDown(int A[],int fa,int index){ int b=A[fa]; for(int left=2*fa+1;left<=index;left=2*left+1){//i是左孩子 if(left+1<=index&&A[left]<A[left+1]){//如果有右孩子则比较 left++; } if(b>=A[left]){ break; }else{ A[fa]=A[left]; fa=left;//修改k } } A[fa]=b; } }
相关文章推荐
- READING NOTE: Weakly Supervised Cascaded Convolutional Networks
- 计算机导论2--语言与算法
- Ubuntu 14.04下Redis安装报错:“You need tcl 8.5 or newer in order to run the Redis test”问题解决
- 面试题总结
- 封装一个函数afterDate(date,n),得到日期date的n天后的日期
- 关于匿名内部类的问题
- elasticsearch使用river同步mysql数据
- aliyun阿里云Maven仓库镜像地址
- 实时操作系统内核的任务调度点
- 程序员的走与留?
- 希尔排序
- MPAndroidChart添加自定义样式
- web前端之锋利的jQuery七:jQuery表格应用、其他应用
- vmstat详解
- springMVC学习笔记(七) ---- json
- 4-19 Count Connected Components(DFS的栈实现+邻接表存图)
- 什么是产品运营?
- python 实践 九九乘法表
- codeforces 699C(广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛)
- hdu2072 单词数