簡單的構造雜湊函式

2021-07-05 05:32:05 字數 505 閱讀 8822

除法雜湊法

最直觀的一種。公式:

index=value%16

求模其實是通過乙個除法運算得到的,所以叫除法雜湊法。

平方雜湊法

求index是非常頻繁,而乘法的運算要比除法來得省時,可以考慮百除法換成乘法和位移操作。公式:

index=(value*value)>>28

value如果很大,value*value不會溢位嗎?答案是會的,但這個乘法根本不會關心溢位,因為這根本不是為了獲取相乘結果,而是為了獲取index。

斐波那契雜湊法

找出乙個理想的乘數,而不是拿value本身當做乘數。對於16位整數而言,這個乘數是40503,對於32位整數而言,這個乘數是2654435769,對於64位整數而言,這個乘數是11400714819323198485。這幾個「理想乘數」是如何得出來的呢?這跟乙個法則有關,叫**分割法則,而描述**分割法則的最經典表示式無疑就是著名的斐波那契數列。

參考1.雜湊表(hash table)及雜湊法(hashing)

構造雜湊函式

一 雜湊函式的選擇有兩條標準 簡單和均勻。簡單指雜湊函式的計算簡單快速 均勻指對於關鍵字集合中的任一關鍵字,雜湊函式能以等概率將其對映到表空間的任何乙個位置上。也就是說,雜湊函式能將子集k隨機均勻地分布在表的位址集上,以使衝突最小化。二 常用雜湊函式 為簡單起見,假定關鍵字是定義在自然數集合上。1 ...

雜湊函式的構造方法

好的雜湊函式要求 1 計算簡單,至少雜湊函式的計算時間不應該超過其他查詢技術與關鍵字比較的時間 2 計算出的雜湊位址分布均勻,這樣可以保證儲存空間的有效利用,並減少為處理衝突而耗費的時間。1.直接定址法 取關鍵字或關鍵字的某個線性函式值為雜湊位址。即h key key或h key a key b,其...

幾種常見的雜湊函式(雜湊函式)構造方法

除留餘數法 數字分析法 平方取中法 摺疊法 疊加法 隨機數法 構造雜湊函式的方法很多,實際工作中要根據不同的情況選擇合適的方法,總的原則是盡可能少的產生衝突。通常考慮的因素有關鍵字的長度和分布情況 雜湊值的範圍等。如 當關鍵字是整數型別時就可以用除留餘數法 如果關鍵字是小數型別,選擇隨機數法會比較好...