1. 程式人生 > 其它 >解決雜湊衝突的方法

解決雜湊衝突的方法

介紹幾種解決雜湊衝突的方法

不同的關鍵字對映到相同的儲存地址則為雜湊衝突,即地址address=h(key1)=h(key2)

1、開放地址法

要求所有的key都要放在雜湊表裡。若發生雜湊衝突時,則以當前的地址為基準,進行再定址,直到發生衝突的key重新找個空地址進行對映

  • 線性探查:以當前地址為基準,順序往下個地址一直探查,每次為一步,即x+1,x+2,···
  • 二次探查:以當前地址為基準,順序往下個地址一直探查,每次為當前步數的平方,即x+1,x+4,x+9,···
  • 偽隨機探查:生成一系列偽隨機數,進行隨機地址探查

2、再雜湊法

當發生衝突時,對當前放生衝突的key用其他雜湊函式進行雜湊後定址,需要多備幾個其他雜湊函式

3、鏈地址

對雜湊表進行鏈結構化,表上每一個雜湊地址相當於一個鏈頭部,即當發生衝突時,每一個衝突的key值連結到同一地址後面的鏈上面,即每一個地址後面都帶著一條多key值的鏈

4、公共溢位區

設立一個公共溢位區,將所有衝突的key值放到公共溢位區,若進行key值對映查詢,不僅需要在雜湊表查詢,也要在公共溢位區查詢