在從密鑰的哈希碼計算哈希表桶索引時,爲什麼我們在分區(模)時避免使用餘數是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