# 將元素數為 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 # 將起點的值放回插入位置