Python全系列 教程
3567个小节阅读:5929.2k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
class MyHeap:
def __init__(self,heap:list[int]):
self.heap = heap
self.init_data()
def size(self):
return len(self.heap)
def init_data(self):
'''维护特性'''
for i in range(self.size()//2-1,-1,-1):
self.down(i)
def down(self,index:int):
# 默认认为index是最大值
max_index = index
# 获取左右子节点
left = index*2+1
right = index*2+2
# 判断哪个索引上的数字最大
if left < self.size() and self.heap[left] > self.heap[max_index]:
max_index = left
if right < self.size() and self.heap[right] > self.heap[max_index]:
max_index = right
# 如果max_index的值不再是Index,说明需要交换
if max_index != index:
self.heap[max_index],self.heap[index] = self.heap[index],self.heap[max_index]
# 递归调用
self.down(max_index)
if __name__ =='__main__':
data = [1,2,3,4,5,6,7,8,9]
heap = MyHeap(data)
print(heap.heap)
实时效果反馈
1. 关于堆,说法错误的是?
A 建堆只可以用自顶向下的方式
B 建堆用自下而上的方式比自顶向下效率高
C down操作就是把数据往下移动
D up操作就是把数据往上移动
答案
1=>A