【答案解析】堆排序是另一种基于选择的排序方法。n个元素的序列{k
1
,k
2
,k
3
,...k
n
},当且仅当满足以下关系时,称之为堆:
k
i
<=k
2i
或者: k
i
>=k
2i
。
k
i
<=k
2i+1
k
i
>=k
2i+1
其中i=1,2,…,n/2。
若将同以上序列对应的一维数组看成是一棵完全二叉树,则堆的含义表明:该完全二叉树的所有非终端结点均不大于(或不小于)其左、右孩子结点的值。由此,若{k1,k2,…kn)是堆,则堆顶元素(或完全二叉树的根结点)必定是该序列n个元素中的最小值(或者最大值)。
若将堆看成是一棵以k
1
为根的完全二叉树,则这棵完全二叉树中的每个非终端结点的值均不大于(或不小于)其左、右孩子结点的值。由此可以看出,若一棵完全二叉树是堆,则根结点一定是这n个结点中的最小者(或最大者)。下图给出了两个堆的示例。
