hash線性探測開放定址法解決衝突

一,利用線性探測法構造散列表(用除餘法來得出散列地址,用開放地址法解決同義詞問題)   題目:已知一組關鍵字爲(26,36,41,38,44,15,68,12,06,51),用除餘法構造散列函數,用線性探查法解決衝突構造這組關鍵字的散列表。    
解答:爲了減少衝突,通常令裝填因子α
由除餘法的散列函數計算出的上述關鍵字序列的散列地址爲(0,10,2,12,5,2,3,12,6,12)。   
前5個關鍵字插入時,其相應的地址均爲開放地址,故將它們直接插入T[0],T[10),T[2],T[12]和T[5]中。  當插入第6個關鍵字15時,其散列地址2(即h(15)=15%13=2)已被關鍵字41(15和41互爲同義詞)佔用。故探查h1=(2+1)%13=3,此地址開放,所以將15放入T[3]中。  當插入第7個關鍵字68時,其散列地址3已被非同義詞15先佔用,故將其插入到T[4]中。   當插入第8個關鍵字12時,散列地址12已被同義詞38佔用,故探查hl=(12+1)%13=0,而T[0]亦被26佔用,再探查h2=(12+2)%13=1,此地址開放,可將12插入其中。 
 類似地,第9個關鍵字06直接插入T[6]中;而最後一個關鍵字51插人時,因探查的地址12,0,1,…,6均非空,故51插入T[7]中。
 二、題目:  
已知一個線性表(38,25,74,63,52,48),假定採用h(k)=k%6計算散列地址進行散列存儲,若用線性探測的開放定址法處理衝突,則在該散列表上進行查找的平均查找長度爲()。  
A. 1.5 B. 1.7 C. 2 D. 2.3 2、
解題過程:  
(1)計算h(k): 38%6 = 2 25%6 = 1 74%6 = 2 63%6 = 3 52%6 = 4 48%6 = 0 
(2)定址:   把不衝突的和衝突的全部列出來即可 地址: 0 1 2 3 4 5  
1、線性表第1個元素(38): 38(第1 次不衝突) 
2、線性表第2個元素(25): 25(第1次不衝突)  
3、線性表第3個元素(74): 74(第1 次衝突,地址 + 1)
 4、線性表第3個元素(74): 74(第2 次不衝突) 
5、線性表第4個元素(63): 63(第1 次衝突,地址 + 1)
 6、線性表第4個元素(63): 63(第2 次不衝突) 
7、線性表第5個元素(52): 52(第1 次衝突,地址 + 1) 
8、線性表第5個元素(52): 52(第2 次不衝突) 
9、線性表第6個元素(48): 48(第1次不衝突) 
經過上述定址過程,線性表中的各個元素都有了唯一的地址。 
2.3、結果  線性表中的 6 個元素,經過9次定址,  在該散列表上進行查找的平均查找長度爲:9/6 = 1.5, 答案選:A   
三、哈希表查找不成功怎麼計算?  
解答:先建好表,然後可以算出每個位置不成功時的比較次數之和,再除以表空間個數!  
例如:散列函數爲hash(x)=x MOD 13,用線性探測,建立了哈希表之後,如何求查找不成功時的平均查找長度!?  
地址: 0 1 2 3 4 5 6 7 8 9 10 11 12  
數據: 39 12 28 15 42 44 6 25 - - 36 - 38 
成功次數: 1 3 1 2 2 1 1 9 1 1 
不成功次數: 9 8 7 6 5 4 3 2 1 1 2 1 10  
查找成功時的平均查找長度:ASL=(1+3+1+2+2+1+1+9+1+1)/10 =2.2  
查找不成功時的平均查找長度:ASL=(9+8+7+6+5+4+3+2+1+1+2+1+10)/13=4.54
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章