heapSort(A,N):
    # 建立堆積
    for i ← N/2 - 1 downto 0:
        downHeap(A, i)

    heapSize ← N
    while heapSize ≥ 2:
        swap(A[0], A[heapSize-1])
        heapSize--
        downHeap(A, 0) # 在 heapSize 的範圍內進行 Down Heap