平方探測法是一種較好的處理沖突的方法,可以避免出現“堆積”問題,它的缺點是不能探測到散列表上的所有單元,但至少能探測到一半單元。下面通過一個例子來理解:
設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次。此時插入全部完成。