线性探测解决hash冲突

我们来简单的例子说明什么是线性探测
假设我们有一个数组
在这里插入图片描述
假设我们用当前公式计算当前数据在数组中的下标位置
int i = num%11;
假设我们有一组数据{1,2,3,11,12,13,14}需要放置在数组中
那么他们对应的下标位置应该分别为
数据:1 下标:1%11 = 1
数据:2 下标:2%11 = 2
数据:3 下标:3%11 = 3
数据:11 下标:11%11 = 0
数据:12 下标:12%11 = 1
数据:13 下标:13%11 = 2
数据:14 下标:14%11 = 3

好,我们把他分别落到对应位置,当 1,2,3,11 四个数落入没有任何问题
在这里插入图片描述
但是当落入12的时候,发现他的下标为1,跟数据1的下标重复了,下标1位置已经放入数据1了,那么怎么办呢?
按照线性探测的说法是,如果当前位置数据冲突了,就从当前位置起,往后找,直到找到为null的位置,然后把数据存储到此节点

那么12最终存储的位置就是如下图
在这里插入图片描述
同理,13和14的落入就应该如下图
在这里插入图片描述

本文是综合自己的认识和参考各类资料(书本及网上资料)编写,若有侵权请联系作者,所有内容仅代表个人认知观点,如有错误,欢迎校正; 邮箱:1354518382@qq.com 博客地址:https://blog.csdn.net/qq_35576976/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值