python 实现堆排序算法代码


Posted in Python onJune 05, 2012
#!/usr/bin/python 
import sys def left_child(node): 
return node * 2 + 1 
def right_child(node): 
return node * 2 + 2 
def parent(node): 
if (node % 2): 
return (i - 1) / 2 
else: 
return (i - 2) / 2 
def max_heapify(array, i, heap_size): 
l = left_child(i) 
r = right_child(i) 
largest = i 
if l < heap_size and array[l] > array[i]: 
largest = l 
if r < heap_size and array[r] > array[largest]: 
largest = r 
if largest != i: 
array[i], array[largest] = array[largest], array[i] 
max_heapify(array, largest, heap_size) 
def build_max_heap(array): 
for i in range(len(array) / 2, -1, -1): 
max_heapify(array, i, len(array)) 

def heap_sort(array): 
build_max_heap(array) 
for i in range(len(array) - 1, 0, -1): 
array[0], array[i] = array[i], array[0] 
max_heapify(array, 0, i) 

if __name__ == "__main__": 
array = [0, 2, 6, 98, 34, -5, 23, 11, 89, 100, 7] 
heap_sort(array) 
for a in array: 
sys.stdout.write("%d " % a)
Python 相关文章推荐
使用PYTHON接收多播数据的代码
Mar 01 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python中的多重装饰器
Apr 11 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python Flask框架扩展操作示例
May 03 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
django实现模型字段动态choice的操作
Apr 01 Python
Python3如何判断三角形的类型
Apr 12 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
python 实现归并排序算法
Jun 05 #Python
python 实现插入排序算法
Jun 05 #Python
python 算法 排序实现快速排序
Jun 05 #Python
python操作MySQL数据库的方法分享
May 29 #Python
python利用elaphe制作二维条形码实现代码
May 25 #Python
用python实现批量重命名文件的代码
May 25 #Python
删除目录下相同文件的python代码(逐级优化)
May 25 #Python
You might like
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
php关联数组快速排序的方法
2015/04/17 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
php源码的安装方法和实例
2019/09/26 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
python字符串连接方式汇总
2014/08/21 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
浅析Python面向对象编程
2020/07/10 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
手机促销活动方案
2014/02/05 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
学习决心书
2014/03/11 职场文书
行政司机岗位职责
2015/04/10 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers