堆排序
2014-07-02 21:21
78 查看
堆排序 Heap Sort
堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义
n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。
情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆)
情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆)
其中i=1,2,…,n/2向下取整;
Heap
Sort
堆排序分析
堆排序方法对记录数较少的文件并不值得提倡,但对n较大的文件还是很有效的。因为其运行时间主要耗费在建初始堆和调整建新堆时进行的反复“筛选”上。堆排序在最坏的情况下,其时间复杂度也为O(nlogn)。相对于快速排序来说,这是堆排序的最大优点。此外,堆排序仅需一个记录大小的供交换用的辅助存储空间。
参考资料:
严蔚敏《数据结构》
/article/4718950.html
/article/1389267.html
转载自/article/4672787.html
相关文章推荐
- 堆和堆排序
- 10种算法原理(冒泡排序,选择排序,快速排序,堆排序,希尔排序,桶排序等)
- STL算法,堆排序
- 白话经典算法系列之七 堆与堆排序
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 堆排序java实现
- 6种排序算法及其比较 简单选择排序,堆排序,简单插入排序,希尔排序,冒泡排序,快速排序,归并排序
- 堆排序 Heap Sort
- 堆排序
- 堆排序原理及实现
- java 堆排序
- 选择排序---简单选择排序 堆排序
- 排序算法08:优先队列与堆排序
- 最大堆排序
- 数据结构基础加强之最小堆的实现与堆排序
- 排序--堆排序
- hdu 1280 堆排序
- c++实现最大堆建立(链表结构)和堆排序
- 堆排序详解
- 排序 堆排序