算法与数据结构——最大堆算法

数据结构——堆
结构类型类似树
与树不同的存在大小关系
最大堆
图片说明

最大堆的实现
# 先创建一个列表
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)
        
        
        
        
最大堆的删除操作






全部评论

相关推荐

比亚迪深圳规划院 产品经理 0.9×1.36×12
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务