数据结构与算法Python版-第八周测验

1单选(2分)
假设你将下列数据:

113 , 117 , 97 , 100 , 114 , 108 , 116 , 105 , 99

根据开放定址的线性探测法,填入长度为11的散列表中,且散列函数选为h(n)=n%11
哪一个选项最好地表达了填入数据之后散列表的状况?

A. 117, 114, 108, 116, 105, 99, __, __, 97, 100, 113
B. 100, 113, 117, 97, 14, 108, 116, 105, 99, __, __
C. 100, __, __, 113, 114, 105, 116, 117, 97, 108, 99
D. 99, 100, __, 113, 114, __, 116, 117, 105, 97, 108
正确答案:D

2单选(2分)
对于一个有13个槽的散列表,选取散列函数为h(n)=n%13,冲突解决方案选为开放定址的线性探测,以首个槽为0号,末个槽为12号。26,130和27按顺序填入,问他们的填入槽号分别为?
A. 0,0,1
B. 0,1,2
C. 1,2,0
D. 1,0,2
正确答案:B

3单选(2分)
对于一个有13个槽的散列表,选取散列函数为h(n)=n%13,冲突解决方案选为数据项链方法,以首个槽为0号,末个槽为12号。26,130和27按顺序填入,问他们的填入槽号分别为?
A. 0,0,1
B. 0,1,2
C. 0,0,2
D. 1,1,2
正确答案:A
解析: A、数据项链方法可以共用槽

4单选(2分)
以下是一个槽数为7的散列表,采用开放定址的线性探测:

7,14,21,__,25,18,11

查找数据项21时需要经过几次比对?

A. 2
B. 4
C. 3
D. 1
正确答案:C
解析: C、需要与0,1,2号槽的7,14,21分别比对,得到数据在2号槽

5单选(2分)
以下是一个槽数为7的散列表,采用开放定址的线性探测:

7,14,21,__,25,18,11

查找数据项24时需要经过几次数据比对(计算槽号次数不计)?

A. 1
B. 3
C. 2
D. 0
正确答案:D
解析: D、计算得到24应该在3号槽,但3号槽为空,不必比对

6多选(3分)
下列关于一个数据项数量为N的完美散列的叙述何者正确?
A. 散列的存储一般需要比顺序存储使用更多存储空间
B. python中的字典数据类型是散列的一种应用
C. python中的列表数据类型是散列的一种应用
D. 散列的存储一般需要比顺序存储使用更少存储空间
正确答案:A、B

7多选(3分)
假设你想为全学院毕业班同学共350人做通讯录,且打算将11位手机号存储在某采用开放定址的线性探测的散列表。以下散列方案中合适为?
A. 选取手机号首三码
B. 选取手机号末三码
C. 选取手机号对211(211是一个质数)的余数
D. 选取手机号对607(607是一个质数)的余数
正确答案:B、D
解析: A、大家的手机号前两位多为13,16,18,极有可能散列效果不佳或无法成功散列 B、外卖、快递和热门餐馆预约叫号确认的常用方式,实测可用 C、350个数据项无法在211个槽成功散列 D、对350个数据项而言,607是一个足够大乃至于可以用于散列的质数

8多选(3分)
以下关于散列算法分析的叙述,何者正确?
A. 如果采用数据链来解决冲突,负载因子0.8,成功的查找,平均需要比对次数约为3
B. 如果采用数据链来解决冲突,负载因子8,失败的查找,平均需要比对次数约为8
C. 如果采用数据链来解决冲突,负载因子8,成功的查找,平均需要比对次数约为5
D. 如果采用线性探测的开放定址法来解决冲突,负载因子0.8,成功的查找,平均需要比对次数约为3
正确答案:B、C、D
散列算法分析:

  • 如果采用线性探测的开放定址法来解决冲突(λ在0~1之间)
    成功的查找,平均需要比对次数为: 1 2 ( 1 + 1 1 − λ ) \cfrac{1}{2}(1+\cfrac{1}{1 - λ}) 21(1+1λ1
    不成功的查找,平均比对次数为: 1 2 ( 1 + ( 1 1 − λ ) 2 ) \cfrac{1}{2}(1+(\cfrac{1}{1 - λ})^2) 21(1+1λ12
  • 如果采用数据链来解决冲突(λ可大于1)
    成功的查找,平均需要比对次数为: 1 + 1 λ 1+\cfrac{1}{\lambda} 1+λ1
    不成功的查找,平均比对次数为:λ
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值