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

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

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