哈希表冲突解决方法方法总结

参考书籍:《大话数据结构》

1. 开放定址法:一旦发生冲突,就去寻找下一个空的散列地址。

只要列表足够大,空的散列地址总能找到,并将记录存入。

        线性探测法:当使用线性探测法进时,会吹按不是同义词却需要争夺一个地址的情况,这种现象是堆积。

        二次探测法:增加平方运算为了不让关键字都聚集在某一块区域,解决堆积问题。

        随机探测法:在冲突时,对于位移量di采用随机函数计算得到。注意这里的随机其实是伪随机,根据随机种子得到

2. 再散列函数法:在冲突时,换用一个散列函数计算。

这种方法使得关键字不产生聚集,但同时增加了计算时间。

3. 链地址法:将所有关键字为同义词的记录存储在一个单链表中,在三列表中只存储所有同义词子表的头指针。

哈希表冲突解决方法方法总结_第1张图片

链地址法对于可能会造成很多冲突的散列函数来说,提供了绝不会出现找不到地址的保障,但也带来了查找时需要遍历单链表的性能损耗。

4. 公共溢出区法:为所有冲突的关键字建立一个公共的溢出区来存放。

哈希表冲突解决方法方法总结_第2张图片

 

在查找时,对给定值通过散列函数计算出散列地址后,咸鱼基本表的相应位置进行对比,如果想等则查找成功;如果不能,则到溢出表进行顺序查找。

#################################################

哈希函数的构造方法

1. 直接定址法:取关键字的某个线性函数作为散列地址

需要事先知道关键字的分布情况,适合查找表小且连续的情况

2. 数字分析法

3. 平方取中法

4. 除留余数法:

最常用的哈希函数构造方法,不仅可以直接mod,也可以平方取中、折叠后在mod

5. 随机数法

你可能感兴趣的:(哈希表冲突解决方法方法总结)