为了账号安全,请及时绑定邮箱和手机立即绑定

什么整数散列函数适合接受整数散列键?

什么整数散列函数适合接受整数散列键?

森林海 2019-08-06 15:40:05
什么整数散列函数适合接受整数散列键?什么整数散列函数适合接受整数散列键?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

Knuth的乘法方法:

hash(i)=i*2654435761 mod 2^32

通常,您应该选择一个乘以您的散列大小(2^32在示例中)的乘数,并且没有与之相关的公因子。这样,哈希函数统一覆盖了所有哈希空间。

编辑:这个哈希函数的最大缺点是它保留了可分性,所以如果你的整数都可以被2或4整除(这并不罕见),它们的哈希也是如此。这是哈希表中的一个问题 - 您最终只能使用1/2或1/4的桶。


查看完整回答
反对 回复 2019-08-06
?
慕斯王

TA贡献1864条经验 获得超2个赞

取决于数据的分布方式。对于一个简单的计数器,最简单的功能

f(i) = i

会很好(我怀疑是最佳的,但我无法证明)。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 903 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信