哈希函数解决冲突之等概率下查找成功时和查找失败时的平均查找长度ASLsucc和ASLunsucc

设哈希函数H(K)=3 K mod 11,哈希地址空间为010,对关键字序列(321349243821412),按下述两种解决冲突的方法构造哈希表,并分别求出等概率下查找成功时和查找失败时的平均查找长度ASLsuccASLunsucc

 线性探测法;

 链地址法。

① 线性探测法:

ASLsucc=(1+1+1+2+1+2+1+2)/8=11/8

ASLunsucc=(1+2+1+8+7+6+5+4+3+2+1)/8=40/8

 

② 链地址法:

​ASLsucc=(1*5+2*3)/8=11/8

ASLunsucc=(1+2+1+2+3+1+3+1+3+1+1)/8=19/8

参考资源链接:[设计哈希表:平均查找长度不超过2的姓名索引](https://wenku.csdn.net/doc/209eayimoa?utm_source=wenku_answer2doc_content) 在设计姓名查找哈希表,首先需要选择一个合适的哈希函数,这直接影响到哈希表的性能。除留余数法是其中一种简单实用的方法,通过将姓名的拼音字符串处理后的值除以哈希表的大小取余数,得到数组索引。为了确保平均查找长度不超过2,还需要采用有效的冲突解决策略来处理可能出现的哈希冲突。推荐使用伪随机探测再散列法,它在冲突发生,采用伪随机生成的探测序列来寻找下一个空槽位,而不是简单的线性探测或二次探测。 具体步骤如下: 1. 构造哈希函数:将姓名的汉语拼音转换为相应的整数值,例如,可以将每个字符的ASCII码值求和后,再除以哈希表大小取余数。 2. 初始化哈希表:创建一个足够大的数组,并将所有槽位初始化为“空”状态。 3. 插入姓名:对于每个姓名,使用哈希函数索引位置,如果该位置已经被占用,则采用伪随机探测再散列法寻找下一个空槽位。 4. 查找姓名:接收用户输入的拼音,使用相同的哈希函数索引位置。如果位置上是所需的姓名,则查找成功;如果不是,则使用相同的探测序列继续查找。 5. 维护平均查找长度:通过分析查找操作的统计信息,调整哈希表大小或探测序列中的伪随机数,以保证平均查找长度不超过2。 为了更深入地理解和应用这些技术,推荐参考《设计哈希表:平均查找长度不超过2的姓名索引》。这份资料详细介绍了哈希表的设计过程,包括如何选择哈希函数、如何初始化哈希表、如何插入和查找姓名,以及如何通过探测策略解决冲突。通过阅读这份文档,你可以掌握构建高效姓名查找系统的方法,从而在实际项目中实现快速的信息检索。 参考资源链接:[设计哈希表:平均查找长度不超过2的姓名索引](https://wenku.csdn.net/doc/209eayimoa?utm_source=wenku_answer2doc_content)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值