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
  • asp之家 网络编程 m.aspxhome.com