散列表,这一篇就够了,线性探测

本文探讨了散列表的基本原理,重点介绍了线性探测法在构建散列表过程中的应用,并通过实例计算了成功查找和失败查找的平均查找长度。理解这些有助于优化数据结构的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

散列表查找平均长度

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

处理冲突的方法分为两种,一是开放定址法,二是拉链法。

开放定址法有四种:线性探测法,平方探测法,再散列法,伪随机序列法
拉链法:链接法

开放定址法主要学习两种:线性探测法,平方探测法,这也是常考察的知识点。

线性探测法:冲突发生时,顺序查看表中的下一个单元,直到找到一个空闲单元或查遍全表。

实例:使用散列函数H(key)=key%11,把一个整数值转化为散列表下标,现把数据{1,13,12,34,38,33,27,22}依次插入到散列表中。 1)使用线性探测构建散列表 2)确定查找成功的平均查找长度以及不成功的平均查找长度

解:散列表的地址范围为0-10,因为key%11,余数为0-10
H(1)=1 无冲突
H(13)=2 无冲突
H(12)=1 有冲突,根据线性探测,H1=2,发生冲突,继续探测,H2=3.无冲突,于是12放在了地址为H3中。
依次类推,有冲突,继续找下一个不为空即可。无冲突,直接放下。
在这里插入图片描述
成功:冲突的总次数/关键字的个数
ASL(sucss)=(1+1+1+3+4+1+2+8)/8=21/8
失败:直接看表格,从前往后,每一个关键字开始指导下一个地址为空结束 ,即为失败的次数。除以地址的个数。
ASL(unsucss)=(9+8+7+6+5+4+3+2+1+1+1)/11=47/11

下一篇平方探测法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Devour123

愿每一份用功都可以得到回报

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值