2 -- 选择排序之堆排序
2015-05-28 14:41
316 查看
二、堆排序
简单排序的时间复杂度是O(n^2),简单选择排序只要操作是进行关键字的比较,怎样减少比较次数就是改进的关键。
堆排序:A、B、C进行比赛,B战胜了A,C战胜了B,那么显然C可以战胜A,C和A就不用比了。
堆是一种数据结构, 是一颗完全二叉树且满足性质:所有非叶子结点的值均不大于或均不小于其左,右孩子节点的值,
A[i]<=A[2*i] && A[i]<=A[2*i+1]。其中A[i]对应堆中的非叶子结点,A[2*i]和A[2*i+1]对应于左右孩子结点。并且最后一非叶子结点下标为[n/2]向下取整。
简单排序的时间复杂度是O(n^2),简单选择排序只要操作是进行关键字的比较,怎样减少比较次数就是改进的关键。
堆排序:A、B、C进行比赛,B战胜了A,C战胜了B,那么显然C可以战胜A,C和A就不用比了。
堆是一种数据结构, 是一颗完全二叉树且满足性质:所有非叶子结点的值均不大于或均不小于其左,右孩子节点的值,
A[i]<=A[2*i] && A[i]<=A[2*i+1]。其中A[i]对应堆中的非叶子结点,A[2*i]和A[2*i+1]对应于左右孩子结点。并且最后一非叶子结点下标为[n/2]向下取整。
相关文章推荐
- 直接选择排序到堆排序做的那些改进
- 排序之选择排序、堆排序、归并排序、高速排序
- 选择排序---简单选择排序 堆排序
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
- 【数据结构和算法】排序算法之二:选择排序和堆排序
- 选择排序---直接选择排序和堆排序
- 常见排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 数据结构例程——选择排序之堆排序
- 快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- 选择排序_堆排序
- 堆排序和选择排序的比较
- 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现
- 第16周项目选择排序之堆排序
- 排序——选择排序之堆排序
- 六大排序(选择,插入,冒泡,希尔,快排,堆排序)
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
- 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)【转载】
- (1.3.7.1)选择排序:堆排序