# 將元素數為 N 的陣列 A 建立堆積 buildHeap(A): for i ← N/2 - 1 downto 0: downHeap(A, i) # 由元素數為 N 的陣列 A 所建立的堆積,以節點 i 為起點進行 Down Heap # 利用插入實作 downHeap(A, i): largest cur ← i; val ← A[i] # 將起點的值暫存在變數中 while True: # 找出擁有最大值的節點 if left(cur) < N and right(cur) < N: # 若左、右都有子節點 if A[left(cur)] > A[right(cur)]: largest ← left(cur) else: largest ← right(cur) else if left(cur) < N: largest ← left(cur) # 若只有左子節點 else if right(cur) < N: largest ← right(cur) # 若只有右子節點 else: largest ← NIL if largest = NIL: break # 若 cur 為葉節點便結束 if A[largest] ≤ val: break # 若比起點的值小便結束 A[cur] ← A[largest] cur ← largest # 往值較大的方向下降 A[cur] ← val # 將起點的值放回插入位置