单选题在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在( )位置上。A∣n/2∣B∣n/2∣C1D∣n/2∣+2
单选题
在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在( )位置上。
A
∣n/2∣
B
∣n/2∣
C
1
D
∣n/2∣+2
参考解析
解析:
相关考题:
一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为( )。 A.39,47,46,80,41,57B.39,41,46,80,47,57C.41,39,46,47,57,80D.39,80,46,47,41,57
一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序的方法建立的初始堆为回答( )(堆顶元素是最小元素,采用树的形式建堆)。 A. 39,41,57,80,47,46B.39,41,46,80,47,57C. 39,47,46,80,41,57D.39,41,57,80,46,47输出堆顶元素后,调整后的堆为回答( )。A.41,47,46,80,57B.41,57,46,80,47C.41,57,80,47,46D.41,80,46,47,57
●高度为h的堆中,最多有 (52) 个元素,最少有 (53) 个元素,在大根堆中,关键字最小的元素可能存放在堆的 (54) 地方。(52) ,(53) A.2h-1B.2 h-1C.2hD.2h+1(54) A.2 h-1≤w≤2 h-1B.2 h≤w≤2 h+1C.2 h+1≤w≤2 h-1D.不确定
对于n个元素的关键字序列{k1,k2,…,kn},当且仅当满足关系ki≤k2i,且ki≤k2i+1(2i≤ n,2i+1≤n)称其为小根堆,反之则为大根堆。以下序列中,(56)不符合堆的定义。A.(4,10,15,72,39,23,18)B.(58,27,36,12,8,23,9)C.(4,10,18,72,39,23,15)D.(58,36,27,12,8,23,9)
● 对于n 个元素的关键字序列{k1,k2,…,kn}, 若将其按次序对应到一棵具有 n 个结点的完全二叉树上, 使得任意结点都不大于其孩子结点(若存在孩子结点), 则称其为小顶堆。根据以上定义, (43) 是小顶堆
对于n个元素的关键字序列{k1,k2,…,kn},若将其按次序对应到一棵具有n个结点的完全二叉树上,使得任意结点都不大于其孩子结点(若存在孩子结点),则称其为小顶堆。根据以上定义,(43)是小顶堆。A.B.C.D.
对于n个元素的关键字序列K1,K2,…,Kn,若有Ki≤K2i≤且Ki≤2i+1(i=1,2,…,[n/2],2i+1≤n),则称其为小根堆。以下关于小根堆及其元素关系的叙述中,错误的是( )。A.关键字序列K1,K2,…,Kn呈非递减排序时一定为小根堆B.小根堆中的序列K1,K2,K4…,K2j(2j≤n)一定为非递减序列C.小根堆中元素K2i与K2i+1(2i≤n,2i+1≤n)之间的大小关系不能确定D.小根堆的最后一个元素一定是序列的最大元素
试题四(共15分)阅读下列说明和C代码,回答问题1至问题 3,将解答写在答题纸的对应栏内。【说明】堆数据结构定义如下:在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则称为小顶堆。堆常用完全二叉树表示,图4-1 是一个大顶堆的例子。堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构,优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小顶堆。以下考虑最大优先队列。假设现已建好大顶堆A,且已经实现了调整堆的函数heapify(A, n, index)。下面将C代码中需要完善的三个函数说明如下:(1)heapMaximum(A):返回大顶堆A中的最大元素。(2)heapExtractMax(A):去掉并返回大顶堆 A的最大元素,将最后一个元素“提前”到堆顶位置,并将剩余元素调整成大顶堆。(3)maxHeapInsert(A, key):把元素key插入到大顶堆 A的最后位置,再将 A调整成大顶堆。优先队列采用顺序存储方式,其存储结构定义如下:define PARENT(i) i/2typedef struct array{int *int_array; //优先队列的存储空间首地址int array_size; //优先队列的长度int capacity; //优先队列存储空间的容量} ARRAY;【C代码】(1)函数heapMaximumint heapMaximum(ARRAY *A){ return (1) ; }(2)函数heapExtractMaxint heapExtractMax(ARRAY *A){int max;max = A-int_array[0];(2) ;A-array_size --;heapify(A,A-array_size,0); //将剩余元素调整成大顶堆return max;}(3)函数maxHeapInsertint maxHeapInsert(ARRAY *A,int key){int i,*p;if (A-array_size == A-capacity) { //存储空间的容量不够时扩充空间p = (int*)realloc(A-int_array, A-capacity *2 * sizeof(int));if (!p) return -1;A-int_array = p;A-capacity = 2 * A-capacity;}A-array_size ++;i = (3) ;while (i 0 (4) ){A-int_array[i] = A-int_array[PARENT(i)];i = PARENT(i);}(5) ;return 0;}【问题 1】(10分)根据以上说明和C代码,填充C代码中的空(1)~(5)。【问题 2】(3分)根据以上C代码,函数heapMaximum、heapExtractMax和 maxHeapInsert的时间复杂度的紧致上界分别为 (6) 、 (7) 和 (8) (用O 符号表示)。【问题 3】(2分)若将元素10插入到堆A =〈15, 13, 9, 5, 12, 8, 7, 4, 0, 6, 2, 1〉中,调用 maxHeapInsert函数进行操作,则新插入的元素在堆A中第 (9) 个位置(从 1 开始)。
对于n个元素的关键字序列{ki, k2,…,kn},当且仅当满足关系ki≤k2i且ki≤k2i+i(i=1, 2,…[n/2])时称为小根堆(小顶堆)。以下序列中,( )不是小根堆。A.12, 20, 36, 48, 25, 50, 40B.12, 36, 20, 48, 40, 25, 50C.12, 20, 25, 36, 40, 48, 50D.12, 36, 20, 48, 25, 50, 40
堆是一种数据结构,分为大顶堆和小顶堆两种类型。大(小)顶堆要求父元素大于等于(小于等于)其左右孩子元素。则( )是一个小顶堆结构。堆结构用二叉树表示,则适宜的二叉树类型为( )。对于10个结点的小顶堆,其对应的二叉树的高度(层数)为( )。堆排序是一种基于堆结构的排序算法,该算法的时间复杂度为(请作答此空)。A.lgnB.nlgnC.nD.n2
对于n个元素的关键字序列{K1,K2,…,Kn},当目仅当满足Ki="则称其为大顶堆。由此可知,以下选项中,( )是小顶堆。A.1,2,7,4,5,6,3B.1,5,3,2,6,4,7C.1,2,3,4,6,5,7D.1,6,4,2,5,7,3
单选题一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为()。A39,47,46,80,41,57B39,41,46,80,47,57C41,39,46,47,57,80D39,80,46,47,41,57
单选题在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在()位置上。An/2Bn/2-1C1Dn/2+2