为提高散列(Hash)表的查找效率,可以采取的正确措施是()。
Ⅰ.增大装填(载)因子 Ⅱ.设计冲突(碰撞)少的散列函数 Ⅲ.处理冲突(碰撞)时避免产生聚集(堆积)现象
正确答案:2.3
Hash表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突,Ⅰ错误。
Ⅱ显然正确。采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象,
Ⅲ正确。
为提高排序速度,进行外排序时,必须选用最快的内排序算法()
正确答案:错误
排序方法按照排序过程中所涉及的存储器可分为内排序和外排序两种,其中,待排序记录全部存放在计算机内存中进行排序的过程,称为内排序;而由于待排序记录的数量很大使得排序过程中也需要对外存设备进行访问的排序过程,称为外排序。
而外排序和内排序不只是考虑内外排序算法的性能,还要考虑IO数据交换效率的问题,内存存取速度远远高于外存。
以下排序算法中是稳定的且时间复杂度最小的是:
bubble sort冒泡 heap sort堆排序 merge sort归并排序 quick sort快排 shell sort希尔排序
正确答案:C
下面函数的功能是
int fun(char *x)
{
char *y = x;
while (*y++);
return (y - x - 1);
}
求字符串的长度 比较两个字符串的大小 将字符串x复制到字符串y 将字符串x连接到字符串y后面
正确答案:A
传入参数为指向字符串首地址的x指针
将x指针赋值给y指针,使它们同时指向字符串首地址
y指针不断向后移动,直至为字符串末尾后一位
y-x-1 为字符串大小
设有一个10阶对称矩阵A[10][10],采用压缩存储方式按行将矩阵中的下三角部分的元素存入一维数组B[ ]中,A[0][0]存入B[0]中,则A[8][6]在B[ ]的( )位置。
正确答案:42
(0,0) 1
(1,0)(1,1) 2
(2,0)(2,1) (2,2) 3
(3,0)(3,1) (3,2) (3,3) 4
(4,0)(4,1) (4,2) (4,3) (4,4) 5
(5,0)(5,1) (5,2) (5,3) (5,4) (5,5) 6
(6,0)(6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 7
(7,0)(7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) 8
(8,0)(8,1) (8,2) (8,3) (8,4) (8,5) (8,6) 6
1+2+3+4+5+6+7+8+6=42
在C++语言中,下面关于数组的描述错误的是()
数组的名字就是指向该数组第一个元素的指针
长度为n的数组,下标的范围是0-n-1
数组的大小必须在编译时确定
数组可通过值参数、地址指针、引用参数三种方式传递给函数
正确答案:C
C和D都是错误的。
C:数组的大小也可以在运行时确定大小,即动态开辟空间。
D:数组传参可以是值传递,引用传递,地址传递。
数组定义为”int a[4][5];”, 引用”*(a+1)+2″表示()(从第0行开始)
a[1][0]+2 a数组第1行第2列元素的地址 a[0][1]+2 a数组第1行第2列元素的值
正确答案:B
a是个行指针,a+1后指向下一行,*(a+1)后变成一个列指针,再+2仍为列指针,指向a数组第一行第二列的元素,选B。题目描述的不准确,第一行也可认为是a[0]。按照给的选项只能选B
对序列(12,18,22,38,39,49,79,89)进行排序,最不适合的算法是()
冒泡排序 快速排序 归并排序 插入排序
正确答案:B
快排不适合对基本有序的数据集合进行排序
以下程序段的输出结果是
char
s[]=
"\\123456\123456\t"
;
printf(
"%d\n"
,strlen(s));
正确答案:12
这里主要是考察转义字符的使用:\\ \123 \t 这些都是转义字符,在计算字符串长度时,这些转移字符代表一个字符。
注意这里的 \123 ,在ascii中,‘\ddd’表示八进制,而'\xdd'表示十六进制,(d是一个数字占位符,表示八进制,x表示十六进制)。所以\123的十进制为83,在ASCII码表中对应的是 S
在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行几次比较( )
正确答案:9
将8个数据俩俩分组比较,需要7次得到最大元素,假设为E,那么第二大元素的取值范围为图中的黄色部分,需要2次比较得出,所以一共是9次。