java排序算法之堆排序
2014-03-18 21:32
211 查看
在博客http://blog.csdn.net/haizi8888/article/details/21414635中,已经分析了二叉堆进行了比较全面的分析;
所谓的堆排序,就是对N个数存储为最大(小)堆的形式,每次deleteMin取出一项,运行N次,就可以获得有序的序列;
步骤如下:
1, 将每一项存入数组中;(花费O(N)时间)
2, 调用buildHeap;(花费O(NlogN)时间)
3, 调用N次deleteMin;(花费O(NlogN)时间)
所以堆排序需要的时间为O(NlogN)时间,当然需要额外的O(N)的空间。
代码比较简单,对比下另一篇博客即可;
所谓的堆排序,就是对N个数存储为最大(小)堆的形式,每次deleteMin取出一项,运行N次,就可以获得有序的序列;
步骤如下:
1, 将每一项存入数组中;(花费O(N)时间)
2, 调用buildHeap;(花费O(NlogN)时间)
3, 调用N次deleteMin;(花费O(NlogN)时间)
所以堆排序需要的时间为O(NlogN)时间,当然需要额外的O(N)的空间。
代码比较简单,对比下另一篇博客即可;
相关文章推荐
- 【排序算法】堆排序原理及Java实现
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- Java实现排序算法——堆排序
- 【Java常用排序算法】选择排序(简单选择排序、堆排序)
- 排序算法之堆排序--Java语言
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法Java实现——选择排序(堆排序)
- 排序算法之堆排序(Java)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 【转】排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- Java各种排序算法汇总(冒泡,选择,归并,希尔及堆排序等)
- 排序算法--堆排序(java)
- Java排序算法(二):堆排序
- 一步一步解析java排序算法---堆排序(最大堆)
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 《排序算法》——堆排序(大顶堆,小顶堆,Java)
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- Java排序算法总结之堆排序