国家二级ACCESS机试选择题(数据结构与算法)模拟试卷16
选择题
1.下列叙述中正确的是(A)
A. 算法的时间复杂度与运行算法时特定的输入有关
B. 算法的时间复杂度与计算机的运行速度有关
C. 算法的时间复杂度与算法程序中的语句条数成正比
D. 算法的时间复杂度与算法程序编制者的水平有关
解析:算法的时间复杂度,是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运行次数来度量,所以与运行算法时特定的输入有关,选项A正确。
2.下列各排序法中,最坏情况下的时间复杂度最低的是(A)
A. 堆排序
B. 快速排序
C. 希尔排序
D. 冒泡排序
解析:堆排序法,最坏情况需要O(nlog2n)次比较。相比以上几种“除希尔排序法外”,堆排序法的时间复杂度最小,故选项A正确。
3.设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中的元素个数为(A)
A. 1
B. O
C. 50
D. 49
解析:栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中有51-50=1个元素,因此选项A正确。
4.某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为(B)
A. 不存在这样的二叉树
B. 200
C. 198
D. 199
解析:在二叉树中,设叶子结点个数为n0,度为2的结点个数为n2,叶子结点的个数计算方法n0=n2+1=199+1=200,所以选项B正确。
5.下列叙述中错误的是(A)
A. 对于各种特定的输入,算法的时间复杂度是固定不变的
B. 算法的时间复杂度与使用的计算机系统无关
C. 算法的时间复杂度与使用的程序设计语言无关
D. 算法的时间复杂度与实现算法过程中的具体细节无关
解析:一般情况下,算法的基本操作重复执行的次数,是模块n的某一个函数f(n)。因此,算法的时间复杂度记做T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。因此算法会随着输入数据的不同而有执行效率的不同,有时候会快点儿,有时候会慢点儿。因此选项A正确。
6.在长度为n的顺序表中查找一个元素,假设需要查找的元素一定在表中,并且元素出现在表中每个位置上的可能性是相同的,则在平均情况下需要比较的次数为(A)
A. (n+1)/2
B. n
C. 3n/4
D. n/4
解析:在一个长度为n的线性表中顺序查找值为x的元素时,在等概率情况下查找成功时平均查找长度为(1+1)/2,所以选项A正确。
7.设非空二叉树的所有子树中,其左子树上的结点值均小于根结点值,而右子树上的结点值均不小于根结点值,则称该二叉树为排序二叉树。对排序二叉树的遍历结果为有序序列的是(A)
A. 中序序列
B. 前序序列
C. 后序序列
D. 前序序列或后序序列
解析:中序遍历的次序是先遍历左子树,再遍历根节点,最后遍历右子树。而左子树结点值<根节点节点值≤右子树节点值,是有序序列,因此选项A正确。
8.循环队列的存储空间为Q(1:50),初始状态为front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,此后又插入一个元素,则循环队列中的元素个数为(A)
A. 1,或50且产生上溢错误
B. 5 1
C. 26
D. 2
解析:循环队列初始状态front=rear=50,经过一系列入队和出队操作后,结束状态还是front=rear=25,这说明入队元素个数和出队元素个数一样多。这样一来最后的元素个数就和原来的元素个数一样多,明显不是0就是50,即要么队空(0个元素),要么队满(50个元素)。这时进行入队操作,如果是队空(0个元素)的情况,此时元素个数为1;如果是队满(50个元素)的情况,就会产生上溢错误。
9.下列算法中均以比较作为基本运算,则平均情况与最坏情况下的时间复杂度相同的是(A)
A. 在顺序存储的线性表中寻找最大项
B. 在顺序存储的线性表中进行顺序查找
C. 在顺序存储的有序表中进行对分查找
D. 在链式存储的有序表中进行查找
解析:最坏情况下的时间复杂度称为最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何情况更长。
平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。在输入不同的情况下算法的运行时间复杂度可能会发生变化。平均时间复杂度给出了算法的期望运行时间,有助于算法好坏的评价以及在不同算法之间比较时有一个统一标准。
在顺序存储的线性表中寻找最大项,其平均情况与最坏情况下的时间复杂度都是n/2。
10.在只有2n个结点的完全二叉树中,叶子结点个数为(A)
A. n
B. n+1
C. n-1
D. n/2
解析:在具有2n个结点的完全二叉树中,叶子结点个数为:(2n+1)/2取整,其值等于n。所以选项A正确。
11.下列叙述中正确的是(A)
A. 在栈中,栈顶指针的动态变化决定栈中元素的个数
B. 在循环队列中,队尾指针的动态变化决定队列的长度
C. 在循环链表中,头指针和链尾指针的动态变化决定链表的长度
D. 在线性链表中,头指针和链尾指针的动态变化决定链表的长度
解析:栈是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶;表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。在栈中,栈顶指针动态反映了栈中元素的变化情况。所以选项A正确。
12.循环队列的存储空间为O(1:40),初始状态为。front=rear=40。经过一系列正常的入队与退队操作后,front=rear=15,此后又退出一个元素,则循环队列中的元素个数为(A)
A. 39,或0且产生下溢错误
B. 14
C. 40
D. 15
解析:循环队列初始状态front=rear=40,经过一系列入队和出队操作后,结束状态还是front=rear=15,这说明入队元素个数和出队元素个数一样多。这样一来最后的元素个数就和原来的元素个数一样多,明显不是0就是40,即要么队列为空(0个元素),要么队列为满队列(40个元素)。这时进行.出队操作,如果是队列满(40个元素)的情况,此时队列中的元素个数为39,如果是队列空(0个元素)的情况,此时就会产生下溢错误。因此选项A正确。
13.某二又树的中序遍历序列为CBADE,后序遍历序列为CBADE,则前序遍历序列为(A)
A. EDABC
B. CBEDA
C. CBADE
D. EDCBA
解析:后序遍历次序是“左右根”,中序遍历次序是“左根右”。
由定义可知:①后序遍历中最后一个就是树根结点,即E结点:②在中序遍历中,根结点左边
本文档预览:3600字符,共9535字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载