# 要素数Nの配列Aで構築されたヒープの要素iをより小さい値に更新
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)