哈希表,处理冲突的方法

当遇到冲突时,通过处理冲突的方法,得到一个Hi(i=1,2,3,4.....)地址序列。若H1任然冲突,求H2,若H2冲突,求出H3......直到找到不冲突的地址为止。

具体的方法:


一.开放定址法:

Hi=(H(x)+di)%m

m:表长

di:增量序列,有三种取法:

1.线性探测再散列:1,2,3,4,5.....m-1

2.二次探测再散列:1,-1,4,-4,9,-9,16,-16....

3.伪随机探测再散列:伪随机数序列

线性探测容易产生“二次聚集”,但能保证只要哈希表未满就能找到不冲突的地址。


二.再哈希法:

Hi=RHi(x)        i=1,2,3,4......

RHi在i不同时,是不同的哈希函数。当冲突产生,换一个哈希函数计算出新的哈希地址,直到不冲突为止。

优点:不易产生“聚集”

缺点:计算时间相对较长。


三.链地址法:

H(x)=x%m

将得到的相同哈希地址的数据通过链表存储。

得到哈希地址即为该链表的头指针。


四.建立公共溢出区:

发生冲突后,直接将该数据填入公共溢出区中。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值