Hash表(雜湊表 雜湊表)

2021-08-09 00:18:50 字數 954 閱讀 2426

雜湊函式:乙個把查詢表中的關鍵字對映成該關鍵字對應的位址的函式,記為hash(key)=addr。(位址可以是陣列下標,索引,或記憶體位址等)

衝突:雜湊函式可能會把兩個和兩個以上的不同關鍵字對映到同一位址。(衝突不可避免,所以要設計好的處理衝突的方法。)

同義詞:發生碰撞的不同關鍵字為同義詞。

雜湊表:根據關鍵字直接進行訪問的資料結構。雜湊表是建立在關鍵字和儲存位址之間的一種直接對映關係。

1、直接定址法

直接取關鍵字某個線性函式值為雜湊位址,雜湊函式為

h(key)=a*key+b;

2、除留餘數法

假定雜湊表表長為m,取乙個不大於m但接近或等於m的質數p,雜湊函式為

h(key)=key%p;

3、平方取中法

取關鍵字的平方值的中間幾位作為雜湊位址。

4、摺疊法

將關鍵字分割成位數相同的幾部分,(最後一部分可以短一些)然後取這幾個部分的疊加和作為雜湊位址,這種方法稱為摺疊法。

hash表大小的確定也非常關鍵,如果hash表的空間遠遠大於最後實際儲存的記錄個數,則造成了很大的空間浪費,如果選取小了的話,則容易造成衝突。在實際情況中,一般需要根據最終記錄儲存個數和關鍵字的分布特點來確定hash表的大小。還有一種情況時可能事先不知道最終需要儲存的記錄個數,則需要動態維護hash表的容量,此時可能需要重新計算hash位址。

1、開放定址法

指的是可存放新表項的空閒位址既向它的同義詞表項開放,又向它的非同義詞表項開放。數學遞推公式為

hi=(h(key)+di)%m

式中,i<=m-1;m為雜湊表表長;di為增量序列。

線性探測法

平方探測法

再雜湊法

偽隨機序列法

2、拉鍊法

採用陣列和煉表相結合的辦法,將hash位址相同的記錄儲存在一張線性表中,而每張表的表頭的序號即為計算得到的hash位址。拉鍊法適用於經常進行插入和刪除的情況。

雜湊(hash 雜湊表)

可以認為雜湊有著陣列的思想,它將所有的資料段拼成乙個陣列 順序表 進行儲存,通過雜湊函式,可以基本上以o 1 的時間複雜度來查詢和儲存資料。通過資料段中的唯一關鍵字 key 經過某種演算法,得出此資料段在整個雜湊陣列 順序表 中的的下標,然後直接取元素即可。有資料結構如下 資料段 key,value...

Hash和雜湊 雜湊 表

hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...

hash表(雜湊表)詳解

什麼是雜湊表?雜湊表 hash table,也叫雜湊表 是 根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做 雜湊函式 存放記錄的陣列叫做 雜湊表。記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜...