回答
你對散列函數有什麼瞭解?
你提到了可擴展哈希。
通過可擴展散列,您可以將散列看作位串,並且通常通過一個trie實現存儲桶查找。雖然我假設你將它轉換爲數組中的索引,但不是基於特里查找。
你提到你最多隻有100個元素。如果你想要所有不同的哈希值,你會有128個可能性,因爲這是7位最接近的位組合。
如果您的哈希函數可以散列每個元素以擁有7個(或更多)不同的位中的7個,那麼您將擁有最優解決方案,並且存儲桶大小爲1個。請留下128個葉節點或128個數組。
如果散列函數可以散列每個元件具有6 7(或更多)不同的位,那麼你有爲2的桶大小你將不得不64葉節點/組合/數組大小。
如果散列函數可以散列每個元件具有的7(或更多)不同的位5,則你必須爲4的桶大小你將不得不32葉節點/組合/數組大小。
既然你說你想要一個桶大小爲4我認爲你的答案是32,你有一個很好的要求,你有一個很好的散列函數,可以給你至少5個不同的第一位。
即使它是唯一鍵,那麼在除以100之後就會得到餘數。並且它可能不會總是唯一的。所以,我認爲很難確定哈希算法會給你相對於數組的唯一索引:) – vodkhang 2010-05-23 02:21:47
@vodkhang:完全有可能具有1:1和跨越映射。 – 2010-05-23 02:24:46
我錯過了這一點:完全改變答案的可擴展哈希。我重新寫了我的答案。 – 2010-05-23 02:38:17
我認爲這取決於你是否需要很高的性能或節省存儲。你可以將元素保存爲100個數組。我對擴展哈希不太瞭解,但是我對哈希的一般理解是它會有某種碰撞,如果你使用一個更大的數組來存儲它,碰撞次數可以減少,增加/刪除和查詢的性能也會更快。我想你應該至少使用128(正好是2^K,我不是在哈希專家):)
- 1. Android可伸縮文本大小?
- 2. Perl:散列中數組的大小,在另一個散列
- 3. SharePoint列表可伸縮性
- 4. 在CouchDB中對散列數組進行映射/縮小
- 5. 數組列表的remove()方法導致數組列表的大小縮小
- 6. 調整可伸縮圖像的大小以匹配UILabel sizeToFit
- 7. 如何將散列數組轉換爲散列值數組?
- 8. 數組散列給出不正確的大小結果 - Ruby
- 9. IIS可伸縮性
- 10. 拉伸/縮小畫布
- 11. 蔚藍雲隊列的可伸縮性
- 12. ffmpeg修改音頻長度/大小(伸展或縮小)
- 13. 數組列表大小小於實數
- 14. C++數組可變大小的數組
- 15. 爲什麼JTextField在傳遞大列數時縮小爲0?
- 16. 將二維數組的大小調整爲不同的大小(例如縮小或壓縮)
- 17. 如何將更大的陣列縮小爲更小的陣列?
- 18. 大型不確定數據集的可伸縮集合
- 19. 大小爲0的數組
- 20. 減小數組列表的大小
- 21. 可伸縮數據庫查詢
- 22. 將散列添加到散列數組如果不爲空?
- 23. Mysql,SQLite,可伸縮性
- 24. aho corasick的可伸縮性
- 25. 可伸縮UIImage和CGAffineTransform
- 26. Cytoscape.js的可伸縮性
- 27. Oracle Forms的可伸縮性
- 28. 可伸縮視頻編碼?
- 29. 可伸縮Webstat跟蹤
- 30. jquery可伸縮容器的容量數組值
我忘了補充一點,桶大小爲4,這很重要。 – neuromancer 2010-05-23 02:22:39
你認爲如何使用小於100的數組來存儲100條不同的記錄? – Stephen 2010-05-23 02:26:07
每個數組入口指向一個存儲桶。桶大小爲4,意味着最多4個記錄可以放入桶中。所以一個數組入口可以指向4條記錄。 – neuromancer 2010-05-23 02:29:25