哈希表大小和键的有效位

标签 hash hashtable modulo

我有一个关于哈希表大小和模块化哈希的问题。我指的哈希算法如下: hash_key % 表大小 = 数组索引。 我正在阅读一本算法教科书,其中给出了以下建议:

如果表大小不是素数,则可能会出现键的所有位在确定 array_index 时不起作用的情况。

谁能用一个例子解释一下这到底意味着什么?

最佳答案

您要避免的是常见因素。有一个定理指出每个数字都可以表示为素数的乘积。

因此,如果你有一个素数作为 mod。您不会分享该部门的任何因素。

假设 A % 30,那么 2、3 和 5 的任何倍数都将共享除法中的因数,并且该因数在除法中将毫无用处。

250/30 = 50/6 = 25/3

您希望尽量减少无用因素。

关于哈希表大小和键的有效位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358712/

相关文章:

c - 从文件中读取换行符分隔的项目

ruby - 帮助重构 Ruby 哈希切片和切 block

powershell - 如何检查 PowerShell 变量是否是有序哈希表?

python - 求一个数的除法余数

c - 尽可能避免使用 mod 运算符是否更好?

ruby - 如何将文件的元素放入哈希中? - ruby

regex - 使用存储在哈希中的正则表达式提取字符串

java - 具有多个值的键

c++ - 将值添加到单独链接的哈希表 C++

matlab - 为大 x 计算 4^x mod 2π