# 要素数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)