加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python 实现堆排序算法代码

发布时间:2020-12-17 08:34:23 所属栏目:Python 来源:网络整理
导读:复制代码 代码如下: #!/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_
复制代码 代码如下:

#!/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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读