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)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。