如何对散列查找进行asl分析计算?_2019年计算机统考408真题第8题及其解析

35b58e859f06243378d216730dbfa799.png

8、现有长度为11且初始为空的散列表HT,散列函数是H(key) = key %7,采用线性探查(线性探测再散列)法解决冲突将关键字序列87,40,30, 6,11,22,98,20依次插入到HT后,HT查找失败的平均查找长度是

A. 4 B.5.25 C.6 D.6.29

解析:

1、什么是散列表?

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

2、算出关键字的存储位置

散列函数是H(key) = key % 7

4d9a562754eab098f0fcb6ca5c8ce09e.png

1、创建一个长度为11且初始值为空的散列表

创建一个0~10的数组,并根据散列函数算出的值把对应的关键字放到数组中。

7c98514c97135f0d1f188eaf532a5c36.png

当放入关键字20的时候,20的地址为6,发现在地址为6的位置上已经有了其他关键字,我们把这种情况叫做产生了冲突

1、怎么解决这种冲突呢?

题中让我们用线性探测法来解决这种冲突。

什么是线性探测法?

就是当遇到冲突的时候,试探下一个相邻的位置是否有关键字的存在,没有即放入,如果下一个位置还有,那继续试探下一个位置,直到找到没有放入关键字的位置,并放入。

2、计算查找失败的平均查找长度

根据H(key) = key % 7 可知,任何关键字在散列表中的位置只能是 0~6。

那查找失败的步长就为关键字位置距离第一个地址上关键字为空的距离

所以总的失败步长为:

9 + 8 + 7 + 6 + 5 + 4 + 3 = 42

平均:42 / 7 = 6

所以答案为:C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值