平方探測法處理雜湊函式衝突

2022-08-18 19:39:11 字數 877 閱讀 6220

平方探測法是一種較好的處理衝突的方法,可以避免出現「堆積」問題,它的缺點是不能探測到雜湊表上的所有單元,但至少能探測到一半單元。下面通過乙個例子來理解:

設hash函式為 h( key ) = key mod 7,雜湊表的位址空間為0,1,...,10,開始時雜湊表為空,用平方探測法解決衝突,畫出依次插入鍵值9,14,10,30,56,28後的雜湊表和比較次數。

1.插入鍵值9,9 mod 7 = 2 ,無衝突,插入,比較一次;

2.插入鍵值14,14 mod 7 = 0,無衝突,插入,比較一次;

3.插入鍵值10,10 mod 7 = 3,無衝突,插入,比較一次;

4.插入鍵值30,30 mod 7 = 2,衝突,2+12=3,有衝突,2-12=1,無衝突插入,比較3次;

5.插入鍵值56,56 mod 7 = 7,無衝突,插入,比較一次;

6.插入鍵值28,28 mod 7 = 0,衝突,0+12=1,有衝突,0-12=-1,此時插入到位址10,如果等於-2就插入到位址9,比較次數3次。此時插入全部完成。

雜湊表平方探測法

平方探測採用原雜湊值加整數平方作為備選位置避免了一次聚集 會產生二次聚集,在備選位置上聚集 裝填因子不能大於0.5,即至少有一半為空且表大小為素數才能保證插入元素總能成功 public class quadraticprobinghashtable public quadraticprobingha...

線性探測法解決雜湊衝突

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

雜湊 雜湊函式 衝突處理

例 如果我們現在要統計的是80後出生年份的人口數,那麼我們對出生年份這個關鍵字可以用年份減去1980來作為位址。此時f key key 1980。這樣的雜湊函式優點就是簡單 均勻,也不會產生衝突,但問題是這需要事先知道關鍵字的分布情況,適合查詢表較小且連續的情況。由於這樣的限制,在現實應用中,直接定...