# 将通过数组 A 构建的堆的元素 i 更新为较小的值 value
decrease(A, i, value):
A[i] ← value
# 从通过数组 A 构建的堆的元素 i 开始向下调整堆
downHeap(A, i):
l ← left(i)
r ← right(i)
# 找出父节点(自身)、左子节点、右子节点中值最大的节点
if l < N and A[l] > A[i]:
largest ← l
else:
largest ← i
if r < N and A[r] > A[largest]:
largest ← r
if largest ≠ i: # 如果某个子节点的值最大
swap(A[i], A[largest])
downHeap(A, largest) # 通过递归重复进行向下调整堆
# 减小元素值的使用示例
A ← 满足堆条件的整数列
decrease(A, 0, 1)
downHeap(A, 0)