TA贡献1865条经验 获得超7个赞
Knuth的乘法方法:
hash(i)=i*2654435761 mod 2^32
通常,您应该选择一个乘以您的散列大小(2^32在示例中)的乘数,并且没有与之相关的公因子。这样,哈希函数统一覆盖了所有哈希空间。
2^32
编辑:这个哈希函数的最大缺点是它保留了可分性,所以如果你的整数都可以被2或4整除(这并不罕见),它们的哈希也是如此。这是哈希表中的一个问题 - 您最终只能使用1/2或1/4的桶。
TA贡献1864条经验 获得超2个赞
取决于数据的分布方式。对于一个简单的计数器,最简单的功能
f(i) = i
会很好(我怀疑是最佳的,但我无法证明)。
大厂算法面试真题解析32讲
¥ 68.00
数据结构与算法(前端版)
¥ 58.00
用技术人的眼光看世界 • 程序员技术指北
¥ 99.00
举报