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单元测试框架unittest使用方法讲解
Apr 13 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
python制作抖音代码舞
Apr 07 Python
django认证系统 Authentication使用详解
Jul 22 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
使用python实现回文数的四种方法小结
Nov 24 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
Python-split()函数实例用法讲解
Dec 18 Python
python 自动化偷懒的四个实用操作
Apr 11 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生成随机密码的三种方法小结
2010/09/04 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
jQuery创建插件的代码分析
2011/04/14 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
js实现内置计时器
2019/12/16 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python Deque 模块使用详解
2014/07/04 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python批量赋值操作实例
2018/10/22 Python
python学生管理系统学习笔记
2019/03/19 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
银行存款证明样本
2014/01/17 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers