选择题
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 |
解析:22%7=1,冲突为0,43%7=1,冲突为1,15%7=1,冲突为2,(1+2+3)/3=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作为表长。