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