散列表,这一篇就够了,平方探测法,有负值

平方探测法(二次探测),包含所有情况

概念介绍:以增量序列1^2 -1^2, 2^2, -2^2, …… , q^2, -q^2,且 q<= [Size/2 ] 循环试探下一个存储地址。

实例如下:三设哈希表表长为m=13,哈希函数H(k)=K mod 11,表中已经放了61,15,38,84四个记录,如图所示,再以此放入关键字49,55,1,66两个记录。完成下列要求。

1.采用线性二次探测再散列处理冲突,画出最终的哈希表,并计算查找成功时的平均查找长度。
在这里插入图片描述

二次散列:

关键字49:
49%11=5 地址5已占,查找次数1
5+1^2=6 地址6已占,查找次数2
5-1^2=4 地址4已占,查找次数3
5+2^2=9 地址9未占,加入,查找次数4

关键字55:
55%11=0 地址0未占,加入,查找次数1
关键字1:
1%11=1 地址1未占,加入,查找次数1
关键字66:
66%11=0 地址0已占,查找次数1
0+1^2=1 地址1已占,查找次数2
0-1^2=-1 此时为负值,将负值+13即可
-1+13=12 地址12未占,加入,查找次数3

ASL(succ)=(1+1+1+1+4+1+1+3)/8=13/8

上一篇:线性探测法

下一篇:链地址法

  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,我作为一个语言模型AI并没有绘图的能力,但我可以给你描述一下线性探测散列表。 线性探测是一种散列表的解决冲突的方。它的基本思想是当一个键的散列值与其应该存储的位置上已经有了另一个键时,从该位置开始往后逐个位置查找,直到找到一个空闲位置为止,然后把这个键存储在该位置上。这个过程叫做线性探测。 我们可以把线性探测散列表想象成一个数组,每个数组元素都是一个键值对(key-value pair),其中键是通过散列函数计算得到的散列值,值是实际要存储的值。当发生冲突时,线性探测会在散列表中查找下一个空闲位置,并将要存储的键值对存储在该位置上。如果散列表已满,那么线性探测会返回一个错误。 下面是一个简单的线性探测散列表的示意图: ``` 索引位置 0 1 2 3 4 键值对 (23,A) (NULL) (45,B) (NULL) (67,C) ``` 在这个散列表中,我们使用散列函数计算键的散列值,并将键值对存储在数组中。当插入键为 29,值为 D 的键值对时,它的散列值为 1,但是该位置已经被键为 23 的键值对占用了。因此,线性探测会从位置 2 开始逐个查找,直到找到一个空闲位置为止。最终,键值对 (29,D) 被存储在位置 3 上,散列表变为: ``` 索引位置 0 1 2 3 4 键值对 (23,A) (NULL) (45,B) (29,D) (67,C) ``` 当查找键为 45 的值时,它的散列值为 2,我们可以直接在位置 2 找到它。当查找键为 42 的值时,它的散列值为 2,但是该位置已经被键为 45 的键值对占用了,因此线性探测会从位置 3 开始逐个查找,直到找到键为 42 的键值对或者一个空闲位置为止。在这个散列表中,键为 42 的键值对并不存在,因此查找失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Devour123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值