Python全系列 教程
3567个小节阅读:5929.9k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
给定元素 num ,我们首先将其添加到堆底。添加之后,由于 num 可能大于堆中其他元素,堆的成立条件可能已被破坏,因此需要修复从插入节点到根节点的路径上的各个节点,这个操作被称为堆化,具体操作:
从底至顶执行堆化,比较插入节点与其父节点的值,如果插入节点更大,则将它们交换。然后继续执行此操作,从底至顶修复堆中的各个节点,直至越过根节点或遇到无须交换的节点时结束
xxxxxxxxxx
def parent(self,index:int):
'''获取父节点'''
return (index-1)//2
def insert(self,num):
# 插入数据
self.heap.append(num)
# 获取最后一个节点的索引
i = self.size()-1
# 获取父节点
while i> 0 and self.heap[self.parent(i)] < num:
# 获取父节点
parent = self.parent(i)
# 维护堆的特性
self.heap[i] = self.heap[parent]
# 更新索引
i = parent
self.heap[i] = num