java语言 堆排序
2016-03-01 20:23
323 查看
重点是向下调整
public class HeapSort { public int[] heapSort(int[] A, int n) { BuildMaxHeap(A, n); for(int i=n-1; i>0; i--){ int tmp = A[i]; A[i] = A[0]; A[0] = tmp; adjustDown(A, 0, i); } return A; } private void BuildMaxHeap(int[] A, int n){ for(int i = n/2; i>=0; i--){ adjustDown(A, i, n); } } private void adjustDown(int[] A, int k ,int len){ int tmp = A[k]; for(int i= 2*k; i<=len-1 ; i*=2){ if(i<len-1&&A[i]<A[i+1]) i++; if(A[i] <= tmp) break; else{ A[k] = A[i]; k = i; } } A[k] = tmp; } }
相关文章推荐
- 几种java数组转List的比较
- simHash 简介以及java实现
- java
- jsp 以及javabean内省技术
- Java排序算法总结之(二)——基于交换排序(冒泡排序、快速排序)
- java类加载机制
- 白话Spring(基础篇)---方法注入与方法替换
- java实现单链表
- 深入理解Java异常处理机制
- Spring Autowired
- java中集合类和队列
- java获取泛型参数的类型的方法 - 实例讲解
- Java实现几种常见排序算法代码
- 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现(转)
- 堆排序的java实现
- SpringMVC源码解析- HandlerAdapter - ModelFactory(转)
- 2016年3月1日
- 入门:Spring MVC
- 在eclipse上编写好一个Java程序后,怎么自动的导入程序需要的包?
- 在Java类中按@没有提示信息