"""
Author: OhiyoX
Date: 2020-02-03
"""
def swap(tree, i, j):
temp=tree[i]
tree[i] = tree[j]
tree[j] = temp
def heapify(tree, n, i):
"""
To heapify the single heap
n indicates how many nodes, i is location
"""
if i >= n:
return
c1 = 2 * i + 1 # left node
c2 = 2 * i + 2 # right node
max = i
if c1 < n and tree[c1] > tree[i]:
max = c1
if c2 < n and tree[c2] > tree[max]:
max = c2
if max != i:
swap(tree, max, i)
def build_heap(tree, n):
"""build heap"""
last_node = n-1 # last node
parent = (last_node - 1) // 2 # last node's parent node
for i in range(parent, -1, -1):
heapify(tree, n, i)
def heap_sort(tree, n):
build_heap(tree, n)
for i in range(n-1, -1, -1):
swap(tree, i, 0)
build_heap(tree, i)
"""main"""
tree = [10, 6, 3, 2, 0, 4, 1, 7, 5, 8, 9]
n = len(tree)
heap_sort(tree, n)
show = ''
for i in range(n):
show = show + str(tree[i]) + " "
print(show)
Python 堆排序
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴...
- 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏、最好、平均时间复杂度均为O...
- ubuntu 中安装网易云音乐 安装包的下载安装包下载地址(特别注意一点,所选择的安装包) 安装过程1.按Ctrl...