python 实现堆排序算法代码
时间:2023-01-12 21:21:26
#!/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)
标签:堆排序
0
投稿
猜你喜欢
PyQt5按下按键选择文件夹并显示的实现
2023-05-02 02:02:10
Python实现生成对角矩阵和对角块矩阵
2021-03-16 11:45:00
python使用webdriver爬取微信公众号
2022-10-06 02:13:30
Django 创建/删除用户的示例代码
2022-09-30 08:59:29
asp如何在线压缩Access数据库?
2010-06-26 12:25:00
Python httplib,smtplib使用方法
2021-12-23 04:34:29
分享整理的12条sql语句连同数据
2012-07-11 16:14:59
Python numpy.interp的实例详解
2023-01-21 07:07:06
Python的10道简单测试题(含答案)
2021-12-28 03:57:24
使用XML库的方式,实现RPC通信的方法(推荐)
2021-11-15 14:00:42
Python3如何判断三角形的类型
2022-01-06 22:12:51
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2023-01-14 16:36:04
分享一个Emeditor压缩样式的宏
2010-08-16 12:30:00
Django nginx配置实现过程详解
2022-11-09 11:42:58
基于Django静态资源部署404的解决方法
2021-09-06 11:59:41
Linux 发邮件磁盘空间监控(python)
2022-03-15 09:17:24
python修改字典键(key)的方法
2023-04-16 20:26:57
TensorFlow数据输入的方法示例
2022-04-27 03:32:03
解决django服务器重启端口被占用的问题
2023-11-10 14:14:12
Pytorch 使用不同版本的cuda的方法步骤
2023-02-06 07:52:23