当前位置:   article > 正文

除留余数法学习

除留余数法
除留余数法介绍
除留余数法此方法为最常用的构造散列函数方法。对于散列表长为m的散列函数公式为:
f( key ) = key mod p ( p ≤ m )
mod是取模(求余数)的意思。事实上,这方法不仅可以对关键字直接取模,也可在折叠、
平方取中后再取模。


一个例子
  很显然,本方法的关键就在于选择合适的p, p如果选得不好,就可能会容易产生同义词。
  下面我们来举个例子看看:
  有一个关键字,它有12个记录,现在我们要针对它设计一个散列表。如果采用除留余数法,
  那么可以先尝试将散列函数设计为f(key) = key mod 12的方法。比如29 mod 12 = 5,所以
  它存储在下标为5的位置。


  不过这也是存在冲突的可能的,因为12 = 2×6 = 3×4。
  如果关键字中有像18(3×6)、30(5×6)、42(7×6)等数字,它们的余数都为6,这就和78所对应
  的下标位置冲突了。


如何合理选取p值


  使用除留余数法的一个经验是,若散列表表长为m,通常p为小于或等于表长(最好接近m)的最小质数或不包含小于20质因子的合数。


  这句话怎么理解呢?要不这样吧,
  我再举个例子:某散列表的长度为100,散列函数H(k)=k%P,则P通常情况下最好选择哪个呢?
  A、91 B、93 C、97 D、99
 实践证明,当P取小于哈希表长的最大质数时,产生的哈希函数较好。我选97,因为它是离长度值最近的最大质数。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/561272
推荐阅读
相关标签
  

闽ICP备14008679号