一尘不染

哪种整数哈希函数可以接受整数哈希键?

algorithm

哪种整数哈希函数可以接受整数哈希键?


阅读 201

收藏
2020-07-28

共1个答案

一尘不染

Knuth的乘法方法:

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

通常,您应该选择一个按哈希大小顺序排列的乘数(2^32在示例中),并且没有公因子。这样,哈希函数可以均匀地覆盖您的所有哈希空间。

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

2020-07-28