标签:
堆排序算法
先看第一个函数HeapAdjust,这个函数功能是在已经是构成堆的二叉树上,如果节点k数据变化了,对节点k进行修正,使之成为一个新的堆二叉树,n为数据长度。
def HeapAdjust(lst,k,n):
while(2*k+1<n):
j=2*k+1
if j+1<n and lst[j]>lst[j+1]:
j=j+1
if lst[j]<lst[k]:
temp=lst[k]
lst[k]=lst[j]
lst[j]=temp
k=j
else:
break
return lstHeapSort函数,利用上面的第一个函数构建堆二叉树,并利用上面的函数进行排序
def HeapSort(lst):
n=len(lst)
for i in range(int(n/2)-1,-1,-1):
lst=HeapAdjust(lst,i,n)
print(lst)
for i in range(n-1,0,-1):
temp=lst[0]
lst[0]=lst[i]
lst[i]=temp
lst=HeapAdjust(lst,0,i)
return lsta=[1,5,2,8,3,4,6,9,7] print(a) result=HeapSort(a) print(result)
标签:
原文地址:http://blog.csdn.net/zhangzhengyi03539/article/details/44889951