天天看點

Algorithm:C++語言實作之Hash雜湊演算法相關(dbj2、sdbm、MurmurHash)

Hash

Hash基礎知識

     Hash,一般翻譯做散列、雜湊,或音譯為哈希,是把任意長度的輸入(又叫做預映射pre-image)通過雜湊演算法變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,是以不可能從散列值來确定唯一的輸入值。簡單的說就是一種将任意長度的消息壓縮到某一固定長度的消息摘要的函數。

Hash算法可以将一個資料轉換為一個标志,這個标志和源資料的每一個位元組都有十分緊密的關系。Hash算法還具有一個特點,就是很難找到逆向規律。

Hash算法是一個廣義的算法,也可以認為是一種思想,使用Hash算法可以提高存儲空間的使用率,可以提高資料的查詢效率,也可以做數字簽名來保障資料傳遞的安全性。是以Hash算法被廣泛地應用在網際網路應用中。

Hash算法也被稱為雜湊演算法,Hash算法雖然被稱為算法,但實際上它更像是一種思想。Hash算法沒有一個固定的公式,隻要符合散列思想的算法都可以被稱為是Hash算法。

1、散列函數和散清單

     若結構中存在和關鍵字K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關系f為散列函數(Hash function),按這個事先建立的表為散清單。

雜湊演算法

1、dbj2

Algorithm:C++語言實作之Hash雜湊演算法相關(dbj2、sdbm、MurmurHash)

2、sdbm

Algorithm:C++語言實作之Hash雜湊演算法相關(dbj2、sdbm、MurmurHash)

3、MurmurHash

Algorithm:C++語言實作之Hash雜湊演算法相關(dbj2、sdbm、MurmurHash)

繼續閱讀