python算法实现系列-堆排序
来源:互联网 发布:贰瓶勉 知乎 编辑:程序博客网 时间:2024/06/05 17:34
最近在学习排序算法,正好打算练习一下自己前段时间自学的python基础,就用python来实现这些算法。
本文实现堆(大顶堆)排序,代码如下:
def heap_adjust(data, s, m): temp = data[s] j = 2 * s + 1 while j < m: if j < m - 1 and data[j] < data[j + 1]: j += 1 if temp > data[j]: break data[s] = data[j] s = j j = 2 * s + 1 data[s] = tempdef heap_sort(data): m = len(data) / 2 - 1 for i in range(m, -1, -1): heap_adjust(data, i, len(data) - 1) for n in range(len(data) - 1, 0, -1): data[0], data[n] = data[n], data[0] heap_adjust(data, 0, n) print data
思路简记如下:
heap_adjust: s..m中的数除s外其他的已经构成大顶堆, 此处要加入s使其依然构成大顶堆。s与其两个孩子结点比较,如果其不大于两个孩子结点中的较大值,则交换二者的值。 对于交换后的新的孩子结点继续如上过程。直到结束。
heap_sort: 将所有有孩子的结点执行heap_adjust。 交换堆顶与未经排序的最后一个元素的值(由于堆顶的值是大顶堆中的最大值,这样我们不断将当前堆的最大值放置到当前最后一个元素中), 并将除最后一个元素之后的所有元素重新构成大顶堆。 持续以上过程。
0 0
- python算法实现系列-堆排序
- 堆排序算法实现 Python
- 排序算法C++ && Python实现---堆排序
- 算法实现系列第二章.堆排序
- python 实现堆排序算法代码
- python算法--堆排序详细实现
- 算法导论堆排序python实现
- Python之堆排序算法实现
- 排序算法—堆排序算法分析与实现(Python)
- 排序算法总结(简单选择排序、堆排序)(python实现)
- 【排序】用Python实现八大排序算法--堆排序
- Python:堆排序算法
- Python实现 [堆] [堆排序]
- 排序算法集合(1)-Python实现的堆排序
- 用Python实现八大排序算法--堆排序
- 排序算法三:堆排序基本原理以及Python实现
- 堆排序PYTHON实现
- Python实现堆排序
- C++ 类型转换及RTTI
- 【2014 Esri开发者大会精彩看点】ArcGIS 10.2.2 Native开发产品新特性【上】
- 按钮与回车键关联
- 转:vim插件 ctags 和 taglist 的安装和使用
- Siesta行动:一起新发现的定向攻击
- python算法实现系列-堆排序
- 单独安装NET3.5的问题
- 看到它,你是一个幸运的人;做到它,你是一个成功的人
- linux 中IO多路复用epoll函数的ET和LT工作模式详解
- C++连接mySql数据库
- myeclipse部署时An internal error occurred 错误 自己试了第一种
- dwr与spring
- liunx 查看硬件配置命令
- yii AR DAO数据库操作