最大堆-插入操作
基本思想:新值先加入末尾,再上浮找到自己的位置
示意图:
代码实现:
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)