6.5 优先队列
# 最大堆pop操作
# 代码
def heap_extract_max(A:List[int])->Optional[int]:
if len(A) < 1:
return None
res = A.pop(0)
max_heapify(A,0)
return res
# 最大堆increase操作
# 代码
def heap_increase_key(A:List[int],i:int,key:int):
if key < A[i]:
return
A[i] = key
while i > 0 and A[parent(i)] < A[i]:
A[i],A[parent(i)] = A[parent(i)],A[i]
i = parent(i)
# 最大堆insert操作
# 代码
def max_heap_insert(A:List[int],key:int):
A.append(float('-inf'))
heap_increase_key(A,len(A)-1,key)
上次更新: 2025/03/22, 03:52:10