演算法6 3 解決雜湊衝突之線性探針

2021-09-06 19:22:00 字數 990 閱讀 3901

線性探針是第二種解決雜湊衝突的辦法。這樣的辦法的基本思想就是當遇到雜湊衝突時,尋找下乙個空位,直到找到空位為止。

先插入乙個值s,例如以下圖。

插入其它的一些值,這些值的哈系沒有衝突,得到下圖的結果。

再插入乙個值h,因為h與a的哈系衝突,因此須要尋找乙個空的位置。

找到了空位

插入

public class linearprobest

public value get(key key)

}return null;

}public void put(key key, value value)

// 找到了已經存在的值

if(key.equals(key2)) }}

private int hash(key key)

}

隨著資料量的新增,因為衝突的雜湊值新增因此速度會越來越慢。在衝突非常少的情況下,每乙個操作的複雜度近似為1。在衝突非常多的情況下,每乙個操作的複雜度可達到n。所以一般取m=n/2,這樣效能最佳,又不浪費空間。

有乙個固定大小的停車場,每輛車都會在隨機的位置i停下,假設停車位i已經被占用了,那麼尋找停車位i+1、i+2等。

線性探針演算法事實上就是knuth停車問題。

線性探測法解決雜湊衝突

線型探測法 解決雜湊衝突的一種方法 include include using namespace std const int indexbox 10 雜湊表最大元素 const int maxnum 7 最大資料個數 void printdata int data,int n void creat...

演算法 開放定址法解決雜湊衝突方式

開放定址法 又稱開放定址法,當雜湊衝突發生時,從發生衝突的那個單元起,按照一定的次序,從雜湊表中尋找乙個空閒的單元,然後把發生衝突的元素存入到該單元。這個空閒單元又稱為開放單元或者空白單元。開放定址法需要的表長度要大於等於所需要存放的元素數量,非常適用於裝載因子較小 小於0.5 的雜湊表。查詢時,如...

演算法 開放定址法解決雜湊衝突方式

開放定址法 又稱開放定址法,當雜湊衝突發生時,從發生衝突的那個單元起,按照一定的次序,從雜湊表中尋找乙個空閒的單元,然後把發生衝突的元素存入到該單元。這個空閒單元又稱為開放單元或者空白單元。開放定址法需要的表長度要大於等於所需要存放的元素數量,非常適用於裝載因子較小 小於0.5 的雜湊表。查詢時,如...