我有一個簡單的問題困在我的腦海裏,一直困擾着我。我的教授簡單地說散列函數是關鍵%arraysize。這對每個哈希表都必須這樣嗎?還是我們決定的東西?我們是否真的爲我們創建的每個哈希表編寫哈希函數?例如,它可以是不同的,簡單地說,散列函數=密鑰。散列函數和餘數運算符
0
A
回答
0
通常,散列函數的域比其範圍大得多。例如,散列可能接受「所有unicode字符串長度小於2^64個字符」並輸出「16位數字」。
是的,對於少數應用程序,使用標識函數作爲散列函數是有意義的,儘管散列表開始看起來非常像普通數組。
對於散列表,一般來說,模(%
)是一個不錯的選擇:它在計算上很容易,並且在通常情況下可以很好地展開。然而,它不是密碼強大的,許多應用程序都需要這樣做。
0
你有一個數組來存儲索引所引用的固定大小的結果(在問題的情況下,index = key%array_size,保證產生一個介於0和array_size-1之間的數字)。如果索引大於數組大小,則會出現問題。如果它總是少於那麼你就浪費了空間,所以散列的最後階段往往是它必須適合的數組大小的模。
當然,這並不總是導致均勻傳播因此您可以在之前修改的密鑰作爲索引。
相關問題
- 1. 按位餘數運算符
- 2. 散列函數計算
- 3. 如何使用餘數運算符
- 4. 散列函數和密鑰
- 5. 散列函數
- 6. Python - 減少函數和|運算符
- 7. 三元運算符和函數簽名
- 8. 對isset函數和運算符[? :]
- 9. OOP C++,虛函數和新運算符
- 10. 正確的散列算法/函數
- 11. 單向函數,散列算法
- 12. 的std :: bitset的散列函數算法
- 13. 重載函數運算符
- 14. 重載運算符函數==
- 15. 定義運算符()函數
- 16. 散列運算 - Angularjs
- 17. 參數列表中不允許多餘的運算符?
- 18. 運算符=函數和添加函數似乎不能共存
- 19. 散列函數.NET
- 20. MD5散列函數
- 21. 在散列中不等於運算符?
- 22. 散列函數中發生重新散列時,賦值運算符重載不起作用
- 23. 鏈接列表複製構造函數和賦值運算符
- 24. 散列散列的智能匹配運算符
- 25. 在C++中調用+ =運算符函數中的運算符+函數
- 26. 良好的字符串散列函數
- 27. 字符串的散列函數
- 28. 字符串散列函數C
- 29. 字節爲字符串散列函數?
- 30. 雙向字符串散列函數