单选题 下列4个序列中,哪一个是堆 ____
【正确答案】 C
【答案解析】堆排序是另一种基于选择的排序方法。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个结点中的最小者(或最大者)。下图给出了两个堆的示例。