在从密钥的哈希码计算哈希表桶索引时,为什么我们在分区(模)时避免使用余数是2的力量?哈希函数和表格的大小表格2^p
0
A
回答
4
在计算散列时,您需要尽可能多的信息,因为您可以在整个位的范围内以低成本实现事物分配,例如: 32位无符号整数通常很好,除非你有大量(> 30亿)的项目存储在散列表中。
它将哈希码转换为您真正感兴趣的桶索引。当桶的数量n是2的乘方时,您需要做的就是在哈希码h和(n -1),结果等于h mod n。
这可能不好的一个原因是AND操作只是简单地丢弃哈希码中的比特 - 高位比特。这可能是好的或坏的,取决于其他事情。一方面,它会非常快,因为AND比分割快很多(并且是你选择使用2个桶数的权力的常见原因),但是另一方面,可能存在较差的哈希函数较低位的熵较差:也就是说,当散列数据改变时,较低位不会有太大变化。
0
让我们说,表大小是m = 2^p。 让k是一个关键。然后,每当我们做k mod m时,我们只会得到k的二进制表示的最后p个比特。因此,如果我放入几个具有相同最后p位的密钥,散列函数将非常糟糕地执行,因为所有密钥都将散列到表中的同一个插槽。因此,避免幂2
相关问题
- 1. 哈希表大小设置
- 2. Vim的表格和Ruby 1.9哈希
- 3. AJAX哈希提交表格
- 4. Powershell哈希表格为HTML
- 5. 在javascript中构建哈希表和完美的哈希函数
- 6. STL哈希表调整大小
- 7. Scala:哈希忽略初始大小(数十亿条目的快速哈希表)
- 8. Python哈希函数和哈希对象
- 9. 哈希表和类数据
- 10. 哈希表ConvertTo-Json PowerShell格式问题
- 11. 在表格中显示列哈希
- 12. 在Rails 3中生成哈希表格
- 13. MySQL表格大小
- 14. 如何实现动态哈希表的哈希函数?
- 15. 哈希表和ArrayList
- 16. 哈希映射哈希表大小限制小于数组索引的最大允许限制
- 17. 哈希表最大功能
- 18. 列表的非加密哈希函数
- 19. TypeScript定义函数的哈希表
- 20. 最小Vb.net表格大小
- 21. 在Perl中加载大文件到哈希(BLAST表格)
- 22. JavaScript最大表格大小
- 23. Google电子表格中单元格文本的哈希值
- 24. 哈希表中的哈希表和同步
- 25. C#表格的大小和位置
- 26. 的epoll和哈希表
- 27. 哈希表大小调整,线性探测和复杂性
- 28. Safari的表格单元格大小
- 29. 插入函数哈希表C
- 30. 水晶报表哈希函数
嘿,你认为我的回答没有回答你的问题吗? – Programmer 2010-12-18 07:50:27