判断题
1-1
在散列中,函数“插入”和“查找”具有同样的时间复杂度。T
1-2
当记录个数小于哈希表长度时,哈希查找平均查找长度必然为0。F
1-3
用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。F
1-4
有n个数存放在一维数组A[1…n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同。F
1-5
折半查找法的查找速度一定比顺序查找法快。F
1-6
就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。F
1-7
hash表的平均查找长度与处理冲突的方法无关。F
选择题
2-1
用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:
A.
7
B.
10
C.
50
D.
99
2-2
在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示:
k = 0;
while ( k<n 且 A[k]<x ) k = k+3;
if ( k<n 且 A[k]==x ) 查找成功;
else if ( k-1<n 且 A[k-1]==x ) 查找成功;
else if ( k-2<n 且 A[k-2]==x ) 查找成功;
else 查找失败;
本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:
(2分)
A.
当x不在数组中
B.
当x接近数组开头处
C.
当x接近数组结尾处
D.
当x位于数组中间位置
2-3
下列二叉树中,可能成为折半查找判定树(不含外部结点)的是:
2-4
在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为( )。
(2分)
A.
5
B.
4
C.
3
D.
6
2-5
顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为( )次。
(2分)
A.
n
B.
n+1
C.
n+2
D.
n-1
2-6
24.输入一个正整数序列(53,17,12,66,58,70,87,25,56,60),按次序构造一棵二叉排序树BS为( )。
2-7
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:
(1分)
A.
顺序查找
B.
二分法
C.
利用哈希(散列)表
D.
利用二叉搜索树
2-8
对哈希(HASH)函数H(k)= k MOD m, 一般来说,m应取
(2分)
A.
素数
B.
很大的数
C.
偶数
D.
奇数
2-9
将元素序列{18, 23, 4, 26, 31, 33, 17, 39}按顺序插入一个初始为空的、大小为13的散列表中。散列函数为:H(Key)=Key%13,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
(3分)
A.
0.54
B.
0.63
C.
0.31
D.
0.62
2-10
现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:
(2分)
A.
4
B.
5.25
C.
6
D.
6.29
2-11
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用线性探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 __
(2分)
A.
0.33
B.
1.17
C.
1.25
D.
1.33
2-12
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用平方探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 __
(2分)
A.
0.33
B.
1.17
C.
1.25
D.
1.33
填空题
4-1
执行以下程序,
#include <stdio.h>
int main( ){
int array[10]={2, 12, 24, 36, 48, 49, 2333, 6666, 23333, 99999};
int key=2333, flag=0, low=0, m, h=9, times=0;
while(low <= h){
m = (low + h) / 2;
times++;
if(array[m] == key) {
printf(“Found-%d-%d”, m, times);
flag = 1;
break;
}
else if(array[m] > key) h = m - 1;
else low = m + 1;
}
if(flag == 0) printf(“Not Found!”);
return 0;
}
程序运行结果(即:在屏幕上打印的内容)是
Found-6-4
。 (注意:要严格按照程序打印的格式填写答案,包括字母的大小写、空格的多少、连字符-和叹号!的格式等,不得随意增加引号、空格等无关字符,否则不得分。例如printf(“hello World”);打印的内容就是hello World,而不是"hello World"。为防止格式书写错误,建议直接从上面的代码中复制部分相关内容。)
4-2
顺序查找算法的平均查找长度
在下面的线性表中
( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
若采用顺序查找算法,假设各元素的检索概率相同,则平均查找长度为 5.5。
4-3
二分查找算法的最大查找长度
在下面的有序表中
( 15, 24, 32, 47, 50, 58, 62, 79, 83, 96 )
若采用二分查找算法,则最大查找长度为 4。