【PTA】【数据结构与算法】散列冲突

选择题

1.散列冲突可以被描述为: (1分)
选项
A两个元素除了有不同键值,其它都相同
B两个有不同数据的元素具有相同的键值
C两个有不同键值的元素具有相同的散列地址
D两个有相同键值的元素具有不同的散列地址

解析:经过散列函数变换后,可能将不同的关键字映射到同一个散列地址上,这种现象称为冲突。

2.若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:(2分)
选项
AN(N+1)/2
BN(N−1)/2
CN+1
DN

解析:查找第一个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分)
选项
AK−1
BK
CK+1
DK(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分)
选项
A0.27
B 0.45
C0.64
D0.73

解析:5/11=0.45。

9.给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:h​i​​(k)=(H(k)±i​2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是: (2分)
选项
A5
B6
C7
D8

解析:6-1=5。

10.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少? (2分)
选项
A1
B4/11
C21/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分)
选项
A1, 3, 3, 9, 4, 9, 9
B1, 3, 4, 9, 7, 5, -1
C1, 3, 4, 9, 5, 0, 8
D1, 3, 4, 9, 5, 0, 2

解析:除余即可得下标。

13.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用线性探测解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A1, 3, 3, 9, 4, 9, 9
B1, 3, 4, 9, 7, 5, -1
C1, 3, 4, 9, 5, 0, 8
D1, 3, 4, 9, 5, 0, 2

解析:冲突往右移到空位。

14.给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用平方探测解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
选项
A1, 3, 3, 9, 4, 9, 9
B1, 3, 4, 9, 7, 5, -1
C1, 3, 4, 9, 5, 0, 8
D1, 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分)
选项
A1, 3, 3, 9, 4, 9, 9
B1, 3, 4, 9, 7, 5, -1
C1, 3, 4, 9, 5, 0, 8
D1, 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分)
选项
A0
B2
C6
D15

解析:6-4=2。

17.给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:h​i(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 40 }依次插入到散列表中。那么元素40存放在散列表中的位置是:(3分)
选项
A2
B6
C8
D15

解析:6-4=2。

18.将元素序列{18, 23, 4, 26, 31, 33, 17, 39}按顺序插入一个初始为空的、大小为13的散列表中。散列函数为:H(Key)=Key%13,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少? (3分)
选项
A0.54
B0.63
C0.31
D0.62

解析:4/13=0.31。

19.给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的5个元素。问:此时该散列表的平均不成功查找次数是多少?(2分)
选项
A26/11
B5/11
C1
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分)
选项
A1.5
B1.6
C2
D3

解析:(2+3+4+5)/4=2。

21.现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:(2分)
选项
A4
B5.25
C6
D6.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分)
选项
A11, 3, 13, 19, 4, 0, 9
B1, 3, 4, 9, 5, 0, 2
C1, 12, 9, 13, 20, 19, 11
D1, 12, 17, 0, 13, 8, 14

解析:再散列将散列表扩大一倍,表长变为20,然后取最近的质数23作为表长。

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页