判断题
1.将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。
2.在散列中,函数“插入”和“查找”具有同样的时间复杂度。
3.在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。
4.采用平方探测冲突解决策略(hi(k)=(H(k)+i2)%11, 注意:不是±i2),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。
5.若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。
6.即使把2个元素散列到有100个单元的表中,仍然有可能发生冲突。
选择题
1.在散列表中,所谓同义词就是:
B.具有相同散列地址的两个元素
C.被映射到不同散列地址的一个元素
D.被不同散列函数映射到同一地址的两个元素
2.在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:
B.二分法
C.利用哈希(散列)表
D.利用二叉搜索树
3.对包含N个元素的散列表进行查找,平均查找长度为:
B.O(logN)
C.O(N)
D.不确定
不确定是否会发生冲突
4.(neuDS)若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( )。
B.链式存储结构
C.索引存储结构
D.散列存储结构
5.将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为:
B.M−S
C.M×S
D.M/S
6.对哈希(HASH)函数H(k)= k MOD m, 一般来说,m应取
B.很大的数
C.偶数
D.奇数
7.一个哈希函数被认为是“好的”,如果它满足条件()。
B.满足(B)和(C)
C.保证不产生冲突
D.所有哈希地址在表长范围内
8.散列函数有一个共同性质,即函数值应按() 取其值域的每一个值。
B.最大概率
C.平均概率
D.同等概率
9.下面关于哈希查找的说法正确的是()。
B.除留余数法是所有哈希函数中最好的
C.哈希函数构造得越复杂越好,因为这样随机性好,冲 突小
D.若需在哈希表中删去一个元素,不管用何种方法解决 冲突都只要简单的将该元素删去即可
10.哈希表的平均查找长度是()的函数。
B.哈希表的装填因子
C.哈希函数
D.表中元素的多少
11.将10个元素散列到100000个单元的哈希表中,是否一定产生冲突?
B.可能会
C.一定不会
D.有万分之一的可能会
12.设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:
B.9
C.10
D.11
13.假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测?
B.K
C.K+1
D.K(K+1)/2
14.采用线性探测法解决冲突时所产生的一系列后继散列地址:
B.必须小于等于原散列地址
C.可以大于或小于但不等于原散列地址
D.对地址在何处没有限制
15.将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
B.0.45
C.0.64
D.0.73
16.给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是:
B.6
C.7
D.8
17.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少?
B.4/11
C.21/11
D.不确定
查找不成功的意思是在一次不成功查找中,除了最后一次检查以外,其他每次都要检查一个被占用但并不包含所求关键字的槽。
设Ci为第i次查找不成功的次数,那么则有:
18.若用平方探测法解决冲突,则插入新元素时,以下陈述正确的是:
B.插入不一定能成功
C.插入一定不能成功
D.若散列表容量为质数,插入就一定可以成功
19.散列冲突可以被描述为:
B.两个有不同数据的元素具有相同的键值
C.两个有不同键值的元素具有相同的散列地址
D.两个有相同键值的元素具有不同的散列地址
20.若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:
B.N(N−1)/2
C.N+1
D.N
21.采用线性探测冲突解决策略,hi(k)=(H(k)+i)mod 11,将散列函数值分别等于2、2、3、3的四个对象a1、a2、a3、a4都插入一个大小为11的空散列表(哈希表)中。在不同的插入顺序中,哪句有关插入后散列表平均成功查找长度的判断是错的?
B.按a1、a3、a2、a4顺序和按a3、a1、a2、a4顺序,平 均成功查找长度一样;
C.按a1、a3、a2、a4顺序和按a4、a1、a2、a3顺序,平 均成功查找长度一样;
D.按任何插入顺序,其平均成功查找长度都一样.
22.__是HASH查找的冲突处理方法:
B.平方取中法
C.二分法
D.开放地址法
23.下面关于哈希查找的说法,不正确的是( )。
B.采用链地址法处理冲突时,若插入规定总是在链首, 则插入任一个元素的时间是相同的
C.用链地址法处理冲突,不会引起二次聚集现象
D.用链地址法处理冲突,适合表长不确定的情况
一次处理冲突过后,可能会影响其他元素的查找时间。
24.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用分离链接法
解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
25.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用线性探测
解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
26.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用平方探测
解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
27.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用开放定址法以及一个二次散列函数h2(X)=7−(X%7)解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
开放定址法公式:
二次散列函数的作用是当冲突发生时,代替di。
28.给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:
B.2
C.6
D.15
29.给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 40 }依次插入到散列表中。那么元素40存放在散列表中的位置是:
B.6
C.8
D.15
30.将元素序列{18, 23, 4, 26, 31, 33, 17, 39}按顺序插入一个初始为空的、大小为13的散列表中。散列函数为:H(Key)=Key%13,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
B.0.63
C.0.31
D.0.62
31.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的5个元素。问:此时该散列表的平均不成功查找次数是多少?
B.5/11
C.1
D.不确定
同17题。
32.现有长度为 7、初始为空的散列表HT
,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT
后,查找成功的平均查找长度是:
B.1.6
C.2
D.3
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
元素 | 22 | 43 | 15 |
成功查找的次数计算:(1+2+3)/3=2。
33.现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:
B.5.25
C.6
D.6.29
这道题需要注意的是,在计算查找失败的平均查找长度的时候,是不需要把下标6以后的元素计算进去的,因为散列函数根本映射不到位置7。
34.设数字 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 在大小为10的散列表中根据散列函数 h(X)=X%10得到的下标对应为 {1, 3, 4, 9, 5, 0, 2}。那么继续用散列函数 “h(X)=X%表长”实施再散列并用线性探测法解决冲突后,它们的下标变为:
B.1, 3, 4, 9, 5, 0, 2
C.1, 12, 9, 13, 20, 19, 11
D.1, 12, 17, 0, 13, 8, 14
需要注意的是,再散列把表长增加两倍之后,还需要取质数,所以是最终表长是 23。