当前位置:   article > 正文

Hash表和Hash冲突_线性hash表的冲突次数

线性hash表的冲突次数

Hash表中的元素存储地址是通过Hash函数计算出来的,当要取出指定元素的时候,直接通过Hash函数计算出元素的存储地址。有时候会出现KEY不同,但是通过Hash函数计算出来的值相同,这个值相同意味着这两个KEY要存在同一位置,这显然不对,这就是Hash冲突。
Hash函数有多种构造方法,常见的有直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数法等,这里选择除留余数法。
解决Hahs冲突也有多种方法,比如:开放定址法、再哈希法、链地址法、建立一个公共溢出区等。这里重点介绍两种,线性探测法和链地址法。
Hash表的装载因子 = 关键字总数/哈希表的长度。比如关键字总数为7,Hash表长度为10,那么装载因子为0.7。

线性探测法

当碰到Hash冲突的时候,多次散列,线性探测存储位置。对于关键字Ki,求得Hash函数的值Hi,但是在地址Hi处已经存放了元素,那么在Hi继续散列,求Hi+1Hi+1 = (Hi + 1)%L,直到遇到空白存储区。
成功时的平均查找长度为每个元素的散列次数的总和/元素总数;
失败时的平均查找长度为0~L-1的查找次数的总和/Hash表长度。失败的查找意思就是这个元素注定在该表中找不到,所以在遇到空白存储区之前会一直往下查找,遇到空白存储区停止,因为如果这个数真的存在那么一定会存在空白存储区,遇到空白存储区还没有找到说明不存在,这个时候就可以停止查找了。

链地址法

该方法解决Hash冲突的策略是,遇到地址相同的关键字就把它链接到已经存在的关键字后面,求失败时的查找长度时不用遍历所有Hash值,只用遍历本Hash值上的所有元素即可。

本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:

参考

链地址法
开地址法
线性探测法
哈希冲突
链地址法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/688812
推荐阅读
相关标签
  

闽ICP备14008679号