資料結構 雜湊表

2021-06-27 03:53:41 字數 1278 閱讀 9995

1.雜湊表的定義

元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h(key)相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h(k),若查詢集合中存在這個記錄,則必定在h(k)的位置上,這種查詢技術稱為雜湊技術。

採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續的儲存空間稱為雜湊表,也稱為雜湊表(hash)。

雜湊既是一種儲存方法,也是一種查詢方法。雜湊不是一種完整的儲存結構,主要是面向查詢的儲存結構。

雜湊方法一般不適用於多個記錄有同樣關鍵碼的情況。不適用於範圍查詢。

對於兩個不同的關鍵碼k1≠k2,有h(k1)=h(k2),即兩個不同的記錄需要存放在同乙個儲存位置中,這種現象稱為衝突。

2.常見的雜湊函式

1>直接定址法

直接定址法的雜湊函式是關鍵碼的線性函式:h(key) = a * key + b (a, b為常數)

特點:單調,均勻,不會產生衝突,但實際中使用這種雜湊函式的情況很少。

適用:事先知道關鍵碼的分布,且關鍵碼集合不是很大而連續性較好的情況。

2>除留餘數法

基本思想:選擇某個適當的正整數p,以關鍵碼除以p的餘數作為雜湊位址,即:h(key) = key mod p;

一般情況下,雜湊表表長為m,通常p為小於或等於表長(最好接近m)的最小素數或不包含小於20質因子的合數。

3>數字分析法

根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。

4>平方取中法

對關鍵碼平方後,按雜湊表大小,取中間的若干位作為雜湊位址(平方後擷取)。

5>摺疊法

將關鍵碼從左到右分割成位數相等的幾部分,最後一部分位數可以短些,然後將這幾部分疊加求和,並按雜湊表表長,取後幾位作為雜湊位址。

3.處理衝突的方法

1>開放定址法:由關鍵碼得到的雜湊位址一旦產生了衝突,就去尋找下乙個空的雜湊位址,只要雜湊位址足夠大,空的雜湊位址總能找到。

1)線性探測法:當發生衝突時,線性探測法從衝突位置的下乙個位置起,依次尋找空的雜湊位址

2)二次探測法

2>拉鍊法:將所有雜湊位址相同的記錄,儲存在乙個單鏈表中。在雜湊表中儲存的是所有字表的頭指標。

資料結構 雜湊表

雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...

資料結構 雜湊表

3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...

資料結構 雜湊表

雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 我們把這種對應關係f稱為雜湊函式,又稱為雜湊 hash 函式。雜湊表 雜湊表 即採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這個空間即為雜湊表。關鍵字對應的記錄儲存位置為雜湊位址。原...