算法与数据结构——最大堆算法
数据结构——堆
结构类型类似树
与树不同的存在大小关系
最大堆
最大堆的实现
# 先创建一个列表 class Array(): def __init__(self, size = 4): self.size = size # 记录容器大小 self.item = [None]*size # 分配空间 self.length = 0 def set_item(self, key, value): self.item[key] = value self.length += 1 def get_item(self,key): return self.item[key] def len(self): return self.length def __iter__(self): for value in self.item yield value class Heap(): def __init__(self): self.item = Array(8) self.count = 0 # 记录当前有多少数据 def add(self, value): self.item[self.count] = value self.siftup(self.count) self.count += 1 def siftup(self,index): if index > 0: parent = int((index - 1)/2) if self.item[index] > self.item[parent]: self.item[index], self.item[parent] = self.item[parent], self.item[index] self.siftup(parent) # 如果还能换就再次调用自己 if __name__ == "__main__": heap = Heap() heap.add(10) heap.add(15) heap.add(20) heap.add(30) heap.add(40) for i in heap.item: print(i)最大堆的删除操作