二次探測法


設哈希表長為11,哈希函數為Hash (key)=key%11。存在關鍵碼{43,7,29,22,16,92,44,8,19},采用二次探測法處理沖突,建立的hash表為( )
二次探測法:采用開放定址法處理沖突中的二次探測再散列(也即是題目中的二元探測法),則哈希函數變為Hash(key) = (Hash(key) + d) % 11,其中d = 1^2, -1^2, 2^2, -2^2, 3^2,……,則開始計算。

對於43,代入公式為Hash(43) = 43 % 11 = 10, 則地址為10;

對於7,代入公式為Hash(7) = 7 % 11 = 7,則地址為7;

對於29,代入公式為Hash(29) = 29 % 11 = 7, 與7沖突,則采用二次探測進行消除沖突, 繼續(7 + 1) % 11 = 8,沒有沖突,則地址為8;

對於22,代入公式Hash(22) = 22 % 11 = 0, 則地址為0;

對於16,代入公式Hash(16) = 16 % 11 = 5, 則地址為5;

對於92,代入公式Hash(92) = 92 % 11 = 4,則地址為4;

對於44,代入公式Hash(44) = 44 % 11 = 0, 與22的地址沖突,則繼續(0 + 1) % 11 = 1,沒有沖突,則地址為1;

對於8, 代入公式Hash(8) = 8 % 11 = 8, 與29有沖突,則繼續(8 + 1) % 11 = 9, 沒有沖突,則地址為9;

對於19,代入公式Hash(19) = 19 % 11 = 8. 與 29有沖突,則繼續(8 + 1) * 11 = 9, 與8有沖突,繼續(8 - 1) % 11 = 7, 與7有沖突,則繼續(8 + 4) % 11 = 1, 與44有沖突,則繼續(8 - 4) % 11 = 4, 與92有沖突,則繼續(8 + 9) % 11 = 6, 沒有沖突,則地址為6.

所以最后得到的Hash表為下圖所示:

0 1 2 3 4 5 6 7 8 9 10
22 44     92 16 19 7 29 8 43

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM