#!/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,len(array))
def heap_sort(array):
build_max_heap(array)
for i in range(len(array) - 1,-1):
array[0],array[i] = array[i],array[0]
max_heAPIfy(array,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 实现堆排序算法代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)