选择题
1.散列冲突可以被描述为: (1分)
选项
A 两个元素除了有不同键值,其它都相同
B 两个有不同数据的元素具有相同的键值
C 两个有不同键值的元素具有相同的散列地址
D 两个有相同键值的元素具有不同的散列地址
解析:经过散列函数变换后,可能将不同的关键字映射到同一个散列地址上,这种现象称为冲突。
2.若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:(2分)
选项
A N(N+1)/2
B N(N−1)/2
C N+1
D N
解析:查找第一个1次,第二个2次,…,第N个N次,共N(N+1)/2次。
3.采用线性探测冲突解决策略,hi(k)=(H(k)+i)mod 11,将散列函数值分别等于2、2、3、3的四个对象a1、a2、a3、a4都插入一个大小为11的空散列表(哈希表)中。在不同的插入顺序中,哪句有关插入后散列表平均成功查找长度的判断是错的? (2分)
选项
A 按a1、a2、a3、a4顺序和按a1、a3、a4、a2顺序,平均成功查找长度一样
B 按a1、a3、a2、a4顺序和按a3、a1、a2、a4顺序,平均成功查找长度一样
C 按a1、a3、a2、a4顺序和按a4、a1、a2、a3顺序,平均成功查找长度一样
D 按任何插入顺序,其平均成功查找长度都一样
解析:
4.__是HASH查找的冲突处理方法: (2分)
选项
A 求余法
B 平方取中法
C 二分法
D 开放地址法
解析:几个基本的冲突处理方法:开放地址法、平方探测法、双散列探测法、再散列法和分离链接法。
5.下面关于哈希查找的说法,不正确的是( )。 (2分)
选项
A 采用链地址法处理冲突时,查找一个元素的时间是相同的
B 采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的
C 用链地址法处理冲突,不会引起二次聚集现象
D 用链地址法处理冲突,适合表长不确定的情况
解析:如果两个元素在同一个链表中,查找时间肯定不同。
6.假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测? (2分)
选项
A K−1
B K
C K+1
D K(K+1)/2
解析:第一个关键字需要探测一次,以后的关键字均比前一个关键字要多探查一次,则共需探测K(K+1)/2次。
7.采用线性探测法解决冲突时所产生的一系列后继散列地址: (1分)
选项
A 必须大于等于原散列地址
B 必须小于等于原散列地址
C 可以大于或小于但不等于原散列地址
D 对地址在何处没有限制
解析:循环后会在原散列地址前。
8.将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少? (3分)
选项
A 0.27
B 0.45
C 0.64
D 0.73
解析:5/11=0.45。
9.给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是: (2分)
选项
A 5
B 6
C 7
D 8
解析:6-1=5。
10.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少? (2分)
选项
A 1
B 4/11
C 21/11
D 不确定
解析:(5+4+3+2+1+1+1+1+1+1+1)/11。
11.若用平方探测法解决冲突,则插入新元素时,以下陈述正确的是: (1分)
选项
A 插入一定可以成功
B 插入不一定能成功
C 插入一定不能成功
D 若散列表容量为质数,插入就一定可以成功
解析:有可能溢出,插入失败。
12.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用分离链接法解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A 1, 3, 3, 9, 4, 9, 9
B 1, 3, 4, 9, 7, 5, -1
C 1, 3, 4, 9, 5, 0, 8
D 1, 3, 4, 9, 5, 0, 2
解析:除余即可得下标。
13.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用线性探测解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A 1, 3, 3, 9, 4, 9, 9
B 1, 3, 4, 9, 7, 5, -1
C 1, 3, 4, 9, 5, 0, 8
D 1, 3, 4, 9, 5, 0, 2
解析:冲突往右移到空位。
14.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用平方探测解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A 1, 3, 3, 9, 4, 9, 9
B 1, 3, 4, 9, 7, 5, -1
C 1, 3, 4, 9, 5, 0, 8
D 1, 3, 4, 9, 5, 0, 2
解析:冲突+1-1移到空位。
15.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用开放定址法以及一个二次散列函数h2 (X)=7−(X%7)解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A 1, 3, 3, 9, 4, 9, 9
B 1, 3, 4, 9, 7, 5, -1
C 1, 3, 4, 9, 5, 0, 8
D 1, 3, 4, 9, 5, 0, 2
解析:
16.给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:(3分)
选项
A 0
B 2
C 6
D 15
解析:6-4=2。
17.给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 40 }依次插入到散列表中。那么元素40存放在散列表中的位置是:(3分)
选项
A 2
B 6
C 8
D 15
解析:6-4=2。
18.将元素序列{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
解析:4/13=0.31。
19.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的5个元素。问:此时该散列表的平均不成功查找次数是多少?(2分)
选项
A 26/11
B 5/11
C 1
D 不确定
解析:(6+5+4+3+2+1+1+1+1+1+1)/11。
20.现有长度为 7、初始为空的散列表HT,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT后,查找成功的平均查找长度是:(2分)
选项
A 1.5
B 1.6
C 2
D 3
解析:(2+3+4+5)/4=2。
21.现有长度为 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
解析:(9+8+7+6+5+4+3)/7=6。
22.设数字 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 在大小为10的散列表中根据散列函数 h(X)=X%10得到的下标对应为 {1, 3, 4, 9, 5, 0, 2}。那么继续用散列函数 “h(X)=X%表长”实施再散列并用线性探测法解决冲突后,它们的下标变为:(3分)
选项
A 11, 3, 13, 19, 4, 0, 9
B 1, 3, 4, 9, 5, 0, 2
C 1, 12, 9, 13, 20, 19, 11
D 1, 12, 17, 0, 13, 8, 14
解析:再散列将散列表扩大一倍,表长变为20,然后取最近的质数23作为表长。
: