二叉堆-插入

最大堆-插入操作

基本思想:新值先加入末尾,再上浮找到自己的位置

示意图:
在这里插入图片描述

代码实现:


class MaxHeap:
    
    def __init__(self,heap):
        self.heap=heap
        
    def insert(self,num):
        self.heap.append(num)
        self.shift_up()
        
    def shift_up(self):#上浮
        current_id = len(self.heap) - 1
        parent_id = (current_id - 1)//2
        while current_id > 0:
            if self.heap[parent_id] >= self.heap[current_id]:
                break
            else:
                self.heap[parent_id], self.heap[current_id] = self.heap[current_id], self.heap[parent_id]
                current_id = parent_id
                parent_id = (current_id -1)//2
                
heap=[90,80,70,60,40,30,20,10,50]
maxheap=MaxHeap(heap)
print(maxheap.heap)
maxheap.insert(85)
print(maxheap.heap)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值