什么整數(shù)散列函數(shù)適合接受整數(shù)散列鍵?什么整數(shù)散列函數(shù)適合接受整數(shù)散列鍵?
3 回答

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
Knuth的乘法方法:
hash(i)=i*2654435761 mod 2^32
通常,您應(yīng)該選擇一個乘以您的散列大?。?code>2^32在示例中)的乘數(shù),并且沒有與之相關(guān)的公因子。這樣,哈希函數(shù)統(tǒng)一覆蓋了所有哈??臻g。
編輯:這個哈希函數(shù)的最大缺點(diǎn)是它保留了可分性,所以如果你的整數(shù)都可以被2或4整除(這并不罕見),它們的哈希也是如此。這是哈希表中的一個問題 - 您最終只能使用1/2或1/4的桶。

慕斯王
TA貢獻(xiàn)1864條經(jīng)驗 獲得超2個贊
取決于數(shù)據(jù)的分布方式。對于一個簡單的計數(shù)器,最簡單的功能
f(i) = i
會很好(我懷疑是最佳的,但我無法證明)。
添加回答
舉報
0/150
提交
取消