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
投稿
猜你喜欢
详解python编程slice与indices函数用法示例
2021-03-23 05:13:22
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2022-06-05 14:11:58
python 多维高斯分布数据生成方式
2022-12-20 20:29:40
vue.js实现含搜索的多种复选框(附源码)
2024-05-13 09:11:00
AI经典书单 人工智能入门该读哪些书?
2023-06-24 07:11:00
python3中set(集合)的语法总结分享
2022-06-06 21:44:56
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2022-07-15 11:50:43
tensorboard显示空白的解决
2023-05-28 15:05:05
PHP使用PHPexcel导入导出数据的方法
2024-05-13 09:21:10
Vue实现页面添加水印功能
2024-04-28 09:24:06
Python实现最大子序和的方法示例
2023-04-08 03:30:38
Python实现针对中文排序的方法
2022-04-20 23:21:51
从语义开始–概念、意义、实践
2010-06-13 18:06:00
显示ASP页面源码的代码
2008-10-12 13:05:00
详细介绍Python中的set集合
2023-07-26 07:35:03
SQL server高并发生成唯一订单号的方法实现
2024-01-21 21:24:55
sqlplus登录\\连接命令、sqlplus命令的使用大全
2023-07-01 08:16:31
Python+OpenCV数字图像处理之ROI区域的提取
2021-01-17 18:54:43
比较详细PHP生成静态页面教程
2023-10-14 18:54:31
巧妙使用python opencv库玩转视频帧率
2023-02-01 13:54:30