采用線性探測方法解決沖突


已知一個線性表(38,25,74,63,52,48),假定采用散列函數h(key)=key%7計算散列地址,並散列存

儲在散列表A[0..6]中,若采用線性探測方法解決沖突,則在該散列表上進行等概率成功查找的平均查找長度為___

分析:利用該散列函數散列存儲結果為

68|48 | |38|25|74|52

位置 0 1 2 3 4 5 6

平均查找長度=總的查找次數/元素數=(1*3+2*1+3*1+4*1)/6=2.0

散列表的填表過程如下:

       首先存入第一個元素38,由於h(38)=38%7=3,又因為3號單元現在沒有數據,所以把38存入3號單元。

       接着存入第二個元素25,由於h(25)=25%7=4,又因為4號單元現在沒有數據,所以把25存入4號單元。

       接着存入第三個元素74,由於h(74)=74%7=4,此時的4號單元已經被25占據,所以進行線性再散列,線性再散列的公式為:Hi=(H(key)+di)% m ,其中的di=1,2,3,4...。所以H1=(4+1)%7=5,此時的單元5沒有存數據,所以把74存入到5號單元。

       接着存入第四個元素63,由於h(63)=63%7=0,此時的0號單元沒有數據,所以把63存入0號單元。 接着存入第五個元素52,由於h(52)=52%7=3,此時的3號單元已被38占據,所以進行線性再散列:H1=(3+1)%7=4,但4號單元也被占據了,所以再次散列:H2=(3+2)%7=5,但5號單元也被占據了,所以再次散列:H3=(3+3)%7=6,6號單元為空,所以把52存入6號單元。

        最后存入第六個元素48,由於h(48)=48%7=6,此時的6號單元已被占據,所以進行線性再散列:H1=(6+1)%7=0,但0號單元也被占據了,所以再次散列:H2=(6+2)%7=1,1號單元為空,所以把48存入1號單元。 如果一個元素存入時,進行了N次散列,相應的查找次數也是N,所以38,25,63這三個元素的查找長度為1,74的查找長度為2,48的查找長度為3,52的查找長度為4。

        所以平均查找長度為:(1+1+1+2+3+4)/6=2。


免責聲明!

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



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