关于链接中的堆排序算法,如果认真分析的话,会发现问题
来源:互联网 发布:python reversed函数 编辑:程序博客网 时间:2024/05/17 13:09
原文链接:http://blog.csdn.net/zxman660/article/details/7940215
package Dec1;public class HeapSort {public HeapSort(Object[] a) {int len = a.length;//构建堆for(int i=(len-1)/2;i>=0;i--) {heapAdjust(a,i,len);}//输出堆顶元素并调整新建堆的过程int count = len-1;while(count>1) {//需要注意此处循环次数//交换树根和最后一个值swap(a,0,count);count-- ;heapAdjust(a,0,count);}}private static void heapAdjust(Object[] a, int i,int len) {Object parent = a[i];for(int j=(i+1)*2-1;j<len;j=(j+1)*2-1) {if(j<len-1 && ((Comparable<Object>)a[j]).compareTo(a[j+1])<0) {++j;}if(((Comparable<Object>)parent).compareTo(a[j])>0) {break;}a[i] = a[j];i = j;}a[i] = parent;//parent插入到正确位置}private static void swap(Object[] a,int i,int j) {Object temp = null;temp = a[i];a[i] = a[j];a[j] = temp;}public static void main(String[] args) {Integer[] data = {49,38,65,97,1,13,27,49};//Integer[] data1 = new Integer[8];new HeapSort(data);//for(int i=0;i<data.length;i++) {//data1[i] = data[data.length-1-i];//}for(int i=1;i<=data.length;i=i*2) {for(int k=i-1;k<2*i-1 && k<data.length;k++) {System.out.print(data[k]+" ");}System.out.println();} }}
0 0
- 关于链接中的堆排序算法,如果认真分析的话,会发现问题
- 堆排序算法分析
- 堆排序算法分析
- 堆排序算法分析
- 堆排序算法分析
- 算法分析:堆排序
- 让算法会说话之堆排序
- 【算法分析】排序算法:堆排序
- 堆排序及算法分析
- 《算法4》中的堆排序
- 算法:C++中的堆排序
- 关于rownum排序分页会比分析函数排序快的问题。。。
- 堆排序算法及时间复杂度分析
- 堆排序算法设计与分析
- 堆排序算法分析 和代码实现
- 堆排序算法分析与实现
- 关于堆排序的c++算法
- 关于堆排序(参考自算法导论)
- Storm-知识点汇总
- GTS4.0常见fail(一)
- Cassandra学习笔记 --- HBase与Cassandra区别于联系
- Mac上编译opencv源码
- 开源组件使用程度认识
- 关于链接中的堆排序算法,如果认真分析的话,会发现问题
- The function of include in Verilog
- apache digester:
- Handler异步消息机制实例解析
- Zookeeper-HA-配置文件(配置粘贴)
- akka的中文文档:
- 介绍一个node调试工具--nodemon
- springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
- RandomAccessFile和内存映射文件?