1
正确答案:A 分块查找的查找长度和表的长度,块的长度均有关。分块查找时,首先在索引表中进行查找,确定要找的节点所在的块。由于索引表是排序的,因此,对索引表的查找可以采用顺序查找或折半查找;然后,在相应的块中采用顺序查找,即可找到对应的节点。
A. 1 B.2 C.3 D.4
2.正确答案:B
在有序表中取中间记录作为比较对象,若给定制与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区域进行查找;若给定值大于中间记录的关键字,则在中间记录的右半区域进行查找;
题中关键序列有11个数,故中间记录为第6个数,即50,因50<90,故在50的右半区域进行查找,同理可得,右半区域的中间记录为90,故需查找两次
3.
3.正确答案:D
链表:方便删除和插入,只需要知道节点和要插入的内容。大小可变,一般链表是动态分配内存空间。链表的节点信息至.少包含数据域和指针域。
链表方便插入删除,数组方便查找。
存储相同数据时,链表占用空间更大(因为链表的一个节点包含数据和指针域)。
4.
4.正确答案:D 为了节省空间,可以对矩阵进行压缩处理。
5.
5.正确答案:B 可以带入值去运算
6
6.正确答案 A 在顺序表中查找,最好情况下第一个元素就是要查找的元素,则比较次数为 1 ;在最坏情况下,最后一个元素才是要找的元素,则比较次数为 n 。两种情况平均即( 1+n ) /2
7.
7.正确答案 A 数组的长度是固定不变的,数组是线性表的一种。而线性表有多种形式,其长度可变。
8.
8.正确答案 B C语言中,字符串默认每个占用1字节,末尾还有'\0',所以一共是4字节
9.
A. 正确 B.错位
9.正确答案 A 最外层的 { ... } 会初始化 a[] 即第一维。而 {1} 会初始化 a[0][] 由于只有一个元素,后续元素会默认置 0 。其他同理。只有一个数字说明元素只赋了A[0][0],A[1][0],A[2][0],其余元素都没赋值
10
10.正确答案 D 要注意时行为主序和列为主序所以a[3,5]以行存储的地址为:(3-1)*10+5=25(i-1)*10+j
第一空是把a中的一个元素赋给max和min 此时i=0 即填a[i]
第二空是判断max和a[j]的大小关系
第三空是判断min和a[j]的大小关系
12
正确答案:B
A.原生类指未被实例化的类,数组一般指实例化,被分配空间的类,不属于原生类.
B.对象的特点是封装了一些数据,同时提供了一些属性和方法,从这个角度来讲,数组是对象
C.格式有误
D.数组的大小确定之后不可改变
13
正确答案:B
14
正确答案:B 线性表可以是有序的,也可以是无序的.集合与线性表的区别是是否允许元素重复 集合不允许元素重复,线性表允许元素重复
15
A 4 B3 C.2 D.5
正确答案:A 97 33 7 13
16
正确答案:B 最好情况:每趟匹配不成功都是在第一个字符,即每趟都只需匹配一次就知道该趟是否匹配。O(m+n)
最坏情况:每趟匹配不成功都是在最后一个字符。时间复杂度O(m*n)
kmp算法的核心即是计算字符串f每一个位置之前的字 符串的前缀和后缀公共部分的最大长度(不包括字符串本身,否则最大长度始终是字符串本身)。获得f每一个位置的最大公共长度之后,就可以利用该最大公共长 度快速和字符串O比较。当每次比较到两个字符串的字符不同时,我们就可以根据最大公共长度将字符串f向前移动(已匹配长度-最大公共长度)位,接着继续比 较下一个位置。事实上,字符串f的前移只是概念上的前移,只要我们在比较的时候从最大公共长度之后比较f和O即可达到字符串f前移的目的
17
正确答案:D short的大小为2字节;short [100]的大小就是200字节
正确答案:A
下三角矩阵,(假设行列都从1开始算下标)按行存储的话,第一行要存储1个元素(第一个),第二行要存储2个元素(前两个),第i行要存储i个元素(前i个)
则A[i][j]与 A[0][0]之间的元素个数等于前i-1行存储的元素个数加上第i行第j列之前的元素个数
前i-1行存储的元素个数=1+2+...+(i-1)=i*(i-1)/2个
第i行第j列之前的元素个数,如果j>=i,之间的元素个数为i,如果j<i,个数为j-1个
j<=i ? i*(i-
1
)/
2
+j-
1
: i*(i+
1
)/
2+i
19
正确答案:B 16个二叉排序树的深度为5,查找一个不存在的最多查到最后一层,即5. log2(16)+1=5
20
正确答案:B 当数组过大的时候CPU无法一次性读取整个内存页面,这时候访问数据的时候就会发生页面置换,如果以列序来访问就会发生频繁的置换,这时候就会消耗大量的时间.
语言本身对于数组在内存中是以行优先存储的,所以用行优先读取就不用变换位置,从而更快