哈希策略

哈希函数:从键到地址的转换。哈希函数在一个给定的键上执行,并且返回其在数组中的相对位置。
哈希表:使用一种哈希策略的数组。
例如:哈希函数key%4
键3、4、8和10不能在数组中找到唯一的位置,因为4和8产生的哈希都会得到索引0。像键4和键8这样得到相同索引的哈希,称为冲突。
解决冲突的办法:
线性探测:查找散列表中离冲突单元最近的空闲单元,并且把新的键插入这个空闲单元。同样的,查找也同插入如出一辙:从散列函数给出的散列值对应的单元开始查找,直到找到与键对应的值或者是找到空单元。缺点是会聚簇。如图插入70的时候都聚在后半部分了。
在这里插入图片描述
二次探测:避免聚簇。从冲突位置将对空位置的搜索向前推进一定的距离。将主索引增加每一次尝试的距离的平方,如果尝试失败了就再次增加距离并尝试。缺点是会漏掉一些单元格,导致浪费。
例如:从主索引key开始并且距离为d,每一轮所使用的的公式是Hash(key) = (Hash(key) + d) % 11。
d=1,-1,4,-,4,9,-9,16,-16,…
截取牛客网上的题:
在这里插入图片描述
在这里插入图片描述
链化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值