python实现的堆排序算法代码
发布时间:2020-05-25 00:32:06 所属栏目:Python 来源:互联网
导读:python实现的堆排序算法代码
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 def heapSort(a):
def sift(start,count):
root = start
while root * 2 + 1 < count:
child = root * 2 + 1
if child < count - 1 and a[child] < a[child + 1]:
child += 1
if a[root] < a[child]:
a[root],a[child] = a[child],a[root]
root = child
else:
return
count = len(a)
start = count / 2 - 1
end = count - 1
while start >= 0:
sift(start,count)
start -= 1
while end > 0:
a[end],a[0] = a[0],a[end]
sift(0,end)
end -= 1
a = [-8,1,3,11,35,68]
heapSort(a)
print a # [-8,68]
Recursivesift(andmorereadableIMHO)Version: def heapsort(a):
def swap(a,i,j):
tmp = a[i]
a[i] = a[j]
a[j] = tmp
def siftdown(a,size):
l = 2*i+1
r = 2*i+2
largest = i
if l <= size-1 and a[l] > a[i]:
largest = l
if r <= size-1 and a[r] > a[largest]:
largest = r
if largest != i:
swap(a,largest)
siftdown(a,largest,size)
def heapify(a,size):
p = (size/2)-1
while p>=0:
siftdown(a,p,size)
p -= 1
size = len(a)
heapify(a,size)
end = size-1
while(end > 0):
swap(a,end)
siftdown(a,end)
end -= 1
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
