雜湊表是儲存資料的一種結構,增加的資料對應雜湊表的特定位址,乙個位址只允許有乙個資料。要增加的資料應該存放在哪個位址是由雜湊函式確定的,但是不管雜湊函式如何取,總是避免不了計算的結果是同乙個位址的情況,這時就不知道衝突的地方應該放哪個資料好,這種情況被稱為雜湊衝突。
為了緩解雜湊衝突,一般採用的方法有以下四種:
這種方法的基本思想是將所有雜湊位址為i的元素構成乙個稱為同義詞鏈的單鏈表,並將單鏈表的頭指標存在雜湊表的第i個單元中,因而查詢、插入和刪除主要在同義詞鏈中進行。
鏈位址法適用於經常進行插入和刪除的情況。
結構示意圖如下:
這種方法同樣是按照按某種方法探測雜湊表中的其他儲存單元,直到找到空位置為止。具體來看是同時構造多個不同的雜湊函式:
hi=rh1(key) i=1,2,…,k
hi=rh2(key) i=1,2,…,k
。。。。。。
當雜湊位址hi=rh1(key)發生衝突時,再計算hi=rh2(key)……,直到衝突不再產生。這種方法不易產生衝突,但增加了計算時間。
這種方法的基本思想是:將雜湊表分為基本表和溢位錶兩部分,凡是和基本表發生衝突的元素,一律填入溢位表。
解決雜湊衝突的四種辦法
雜湊是通過對資料進行再壓縮,提高效率的一種解決方法。但由於通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的雜湊值。這時候就產生了雜湊衝突。裝填因子 裝填因子 資料總數 雜湊表長 雜湊函式 處理衝突的方法 解決雜湊衝突的四種方法 1 線性探測 按順序...
雜湊衝突及四種解決方法
通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的值。這時候就產生了雜湊衝突。就是根據key即經過乙個函式f key 得到的結果的作為位址去存放當前的key value鍵值對 這個是hashmap的存值方式 但是卻發現算出來的位址上已經有人先來了。就...
雜湊衝突及四種解決方法
雜湊是通過對資料進行再壓縮,提高效率的一種解決方法。但由於通過雜湊函式產生的雜湊值是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的值。這時候就產生了雜湊衝突。裝填因子 裝填因子 資料總數 雜湊表長 雜湊函式 處理衝突的方法 1.開放位址方法 1 線性探測 按順序決定值時,...