首页 > 试题广场 >

下列关键码序列哪些是一个堆( )

[不定项选择题]
下列关键码序列哪些是一个堆( )
  • 90 31 53 23 16 48
  • 90 48 31 53 16 23
  • 16 53 23 90 31 48
  • 16 31 23 90 53 48
把所有堆的题目都刷完了,这种题目算法是直接非常简单了
发表于 2016-08-19 17:56:16 回复(2)
更多回答
推荐
A满足最大堆的情况,D满足最小堆的情况

堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足


时称之为堆。由堆的定义可以看出, 堆顶元素 (即第一个元素)必为最小项(小顶堆)。
若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。
A的二叉树:其余类推(如果不对请指正),如何堆的定义

编辑于 2015-12-03 12:34:32 回复(1)
D

判断是否为堆排序,要根据堆排序的两点性质来判断,分别是:

(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子

(2)若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:

树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字

编辑于 2015-11-30 10:23:06 回复(0)
AC,将序列按照层次变量画成二叉树,看每个节点是否都大于子节点(最大堆)或者都小于子节点(最小堆)
发表于 2015-09-04 15:41:59 回复(0)
AD
发表于 2015-08-26 18:47:12 回复(0)
大顶堆和小顶堆
发表于 2023-02-23 17:01:08 回复(0)
c没问题啊
发表于 2022-11-11 08:37:41 回复(0)
选AD
考察的是堆的定义,A是大顶堆,D是小顶堆。
发表于 2020-07-20 10:58:49 回复(0)
大小堆
发表于 2018-01-22 17:34:02 回复(0)
C选项有误,应该为16 53 23 90 31 48 最后是31和48 ,不是3148
发表于 2016-02-24 18:16:48 回复(0)
AD
你可以前面两个数 判断是 小堆排列还是大堆排列的
然后按照得到的进行正确性判断
发表于 2015-12-03 10:29:47 回复(0)