雜湊演算法學習

2021-07-01 23:47:56 字數 748 閱讀 7085

今天學習nosql資料庫的時候,學習到了memcached,但是對於雜湊演算法不太了解,這裡進行學習。

什麼是雜湊演算法?

把任意的二進位制字元轉換成固定長度的二進位制值得一種演算法。了解雜湊演算法前要了解雜湊表。

什麼是雜湊表?

也叫做雜湊表,根據key來訪問的一種資料結構;這個key->value這個對映稱為雜湊函式,存放的記錄叫做雜湊表!

通過乙個例子來理解

假設我們要存70個元素,然後申請了100個空間位址來存這70元素,那麼70/100=0.7就是負載因子,明顯,這個負載因子越小越好。我們的雜湊函式會隨機地把這70個元素平均地分配到個個位置去,因為是隨機分配的,不排除會出現有相同的兩個元素都分配到同乙個位置去的情況,即不同的key指向同乙個位址,雖然雜湊函式已經夠優秀,但是還是有可能出現這種情況的。這種情況就叫做雜湊衝突。總結就是:雜湊函式是乙個固定的演算法函式,將元素隨機分配到雜湊表中。

雜湊衝突怎麼解決?

1.好的雜湊函式,要求好的演算法

2.合適大小的負載因子

3.好的處理衝突的方法,即是發生衝突後的乙個好的重新分配方法

雜湊函式的一些常用演算法

2.數字分析法:比如一組資料表示員工生日,年月日,大家都是90後,那199x年xx月xx日,若用199x作為雜湊位址,就很容易衝突,如果用比較不同的xx月xx日的***x來作為雜湊位址,就不容易衝突;

5. 隨機數法:即取隨機數;如果關鍵字長度不統一,用這個方法不錯

了解了以上的定義,我已經對雜湊表有了乙個比較好的了解。

演算法學習 雜湊表

雜湊表 hash table,也叫雜湊表 是根據鍵 key 而直接訪問在記憶體儲存位置的資料結構。也就是說,它通過計算乙個關於鍵值的函式,將所需查詢的資料對映到表中乙個位置來訪問記錄,這加快了查詢速度。這個對映函式稱做雜湊函式,存放記錄的陣列稱做雜湊表。雜湊函式 hashfunction 若關鍵字為...

演算法學習 雜湊表及雜湊查詢

基於樹等的查詢方法,都是通過一系列對比來查詢的,查詢效率由比較一次所縮小的查詢範圍決定。而理想的查詢情況是直接根據關鍵碼得到其對應的資料元素位置。原理 將待儲存元素經過某一函式特定轉換為乙個值,將這個值作為位址,將這個待儲存元素存入這個位址中。當要查詢時,則將待查詢的元素經過同一轉換函式得到乙個轉換...

雜湊表與雜湊演算法學習筆記

雜湊表 於陣列具有下標隨機訪問特性,理解這點非常重要。可以說雜湊表是由陣列進化來的。將輸入的鍵通過雜湊函式對映得出的value作為index去table中查詢,這便是雜湊的思想。graph lr a 鍵值key 雜湊函式 b 結果value 我們了解到為什麼雜湊表的查詢複雜度是o 1 因為key v...