開放地址法
開放地址法
開放地址法是一個計算機術語。
1.衝突處理方法一---開放地址法
當發生地址衝突后,求解下一個地址用:
ND =( D+di)%m i=1,2,…,k(k<= m-1)
(1)線性探測再散列
D = H(key);
ND = (D+di)%m; di取1,2,3,……,m-1
線性探測再散列處理衝突的基本思想:若數據元素在存儲地址D發生衝突,則放到存儲地址(D+1)%m;若又發生衝突則放到存儲地址(D+2)%m;若再發生衝突則放到存儲地址(D+3)%m;……;直到碰到第一個為空的存儲地址(D+i)%m,則將數據元素存放在該存儲空間。
(2)二次探測再散列
D = H(key);
ND = (D+di)%m; di取1*1,-1*1,2*2,-2*2,……,K*K,-K*K (K≤m/2)
(3)雙散列法
D = H1(key);
p = H2(key);
ND = (D+p)%m;
值得提醒的是,對利用開放地址法查了衝突所產生的哈希表中刪除一個元素,不能簡單地直接刪除,因為這樣將截斷其它具有相同哈希地址的元素的查找地址,所以應設定一個特殊的標誌以表明該元素已被刪除。