Can you summarize the following document?
        
  若以升序排序說明,把陣列轉換成最大堆積(Max-Heap Heap),這是一種滿足最大堆積性質(Max-Heap Property)的二元樹:對於除了根之外的每個節點i, A[parent(i)] ≥ A[i]。  重複從最大堆積取出數值最大的結點(把根結點和最後一個結點交換,把交換後的最後一個結點移出堆),並讓殘餘的堆積維持最大堆積性質。

  通常堆是通過一維陣列來實現的。在陣列起始位置為0的情形中:

  在堆的資料結構中,堆中的最大值總是位於根節點(在優先佇列中使用堆的話堆中的最小值位於根節點)。堆中定義以下幾種操作:

  

  基於以上堆相關的操作,我們可以很容易的定義堆排序。例如,假設我們已經讀入一系列資料並建立了一個堆,一個最直觀的演算法就是反覆的呼叫codice_1函式,因為該函式總是能夠返回堆中最大的值,然後把它從堆中刪除,從而對這一系列返回值的輸出就得到了該序列的降序排列。真正的原地堆排序使用了另外一個小技巧。堆排序的過程是:

  堆排序的平均時間複雜度為formula_5,空間複雜度為formula_6。
堆排序(英語:Heapsort)是指利用堆這種資料結構所設計的一種排序演算法。堆是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子節點的鍵值或索引總是小於(或者大於)它的父節點。