数据结构——堆排序
来源:互联网 发布:淘宝真假混卖店铺美妆 编辑:程序博客网 时间:2024/05/16 10:12
reference:
http://www.cnblogs.com/liushang0419/archive/2011/04/26/2029631.html
堆排序总结
堆排序思想:最大堆的堆顶元素是全部数据中的最大值,输出这个值
。再将剩余元素整理成新的最大堆,此时堆顶元素有时又是剩余元素
的最大值,再输出这个值。继续这个过程,每次输出堆顶元素,并将
剩余元素整理成新的最大堆再输出...
堆排序要解决的几个问题
1:如何将数据排列成堆的形式——初始堆的建立
2:输出堆顶元素后,剩余元素如何再整理成新的堆——堆的整理
3:输出元素放在什么位置
预备知识:
1: 堆中的元素存储在一个数组中,根据堆中的各元素之间具有
有序性关系,可以使用二叉树的方式来表示一个堆。因为各元素从前
至后存放在数组的钱n 个单元中,所以所画的二叉树实际上是一颗完全
二叉树
2: 所以根据完全二叉树的性质,数组前一半的数据都是分值节点,后一半
的数据都是叶子节点
3: 即如果有七个数,分别占据数组的a[1]-a[7],那么7/2=3,所以a[1],
a[2],a[3]为分支节点,剩下的为叶子节点
4: a[i]的左儿子为a[i*2],右儿子为a[i*2+1],如a[1]的左右儿子分别为
a[2]与a[3]。(这有赖于数组从a[0]开始,还是从a[1]开始)
建堆的过程:
见代码,见实例图
- 数据结构 — 堆排序
- 数据结构——堆排序
- 数据结构——堆排序
- 数据结构——堆排序
- 数据结构——堆排序
- 数据结构 —— 堆排序
- 数据结构 — 浅析堆排序
- 数据结构之排序——堆排序
- 数据结构排序算法——堆排序
- 数据结构与算法——堆排序
- 数据结构学习11——堆排序
- 数据结构示例——堆排序过程
- 数据结构与算法——堆排序
- Java数据结构——堆排序实现
- 数据结构之——堆排序
- 数据结构&算法实践—【排序|选择排序】堆排序
- 复习数据结构:排序算法(六)——堆排序
- 数据结构例程——选择排序之堆排序
- ExpandableListActivity 关于group和child列表长按事件,显示不同的操作列表
- SNMP Table 简介
- '''Tkinter教程之Menu篇'''
- 图形点扫描
- nosql-支持观点
- 数据结构——堆排序
- nosql-反对观点
- Loadrunner一些性能标志及配置参数
- 屏幕坐标向OpenGL坐标转换
- Java ArrayList
- RCS (Rich Communication Suit) Study
- hibernate 多对多试验
- '''Tkinter教程之Event篇(1)'''
- JS刷新当前页面