# 将通过数组 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)