def ajust_max_heap(dad, length, arr):#dad代表父结点的位置
son=2*dad+1 #找到左孩子的位置
while son<length:
if son+1<length and arr[son]<arr[son+1]:#判断左右孩子哪个孩子的值最大
son+=1
if arr[son]>arr[dad]:
arr[son],arr[dad]=arr[dad],arr[son]
dad=son#若孩子结点的值>父结点, 交换两者的值后往下继续判断
son=2*dad+1
else:
break
def heap(arr):
for i in range(len(arr)//2-1,-1,-1):
ajust_max_heap(i,len(arr),arr)
if __name__=="__main__":
arr=[i for i in range(10)]
heap(arr)
堆构建python代码实现
于 2024-03-07 21:47:12 首次发布
本文详细介绍了如何使用Python编写defadjust_max_heap()函数来维护最大堆结构,以及heap()函数的整体流程。通过调整父子节点的值,确保堆的性质得以保持。
摘要由CSDN通过智能技术生成