1. 程式人生 > >散列表查詢成功和不成功時的平均查詢長度

散列表查詢成功和不成功時的平均查詢長度

已知散列表長度為13,雜湊函式為H(key)=key % 11,處理衝突的方法為線性探測法,請畫出依次插入關鍵字(10,8,40,27,21,57,46,23,19,56)以後的散列表,並計算查詢成功和不成功時的平均查詢長度。

解:散列表是雜湊表的另一種叫法,雜湊函式為H(key)=key % 11用的是除留餘數法,線性探測法就是當遇到衝突時,H(key)=(key+d )% 11,key為關鍵字,若還是遇到衝突,D(i)=(H(key)+(i) )% 11,依次往下去,直到地址不衝突,若一直沒找到,查詢失敗。可取d=1.

10%11=10  將10放A[10];

 8%11=8     將8放A[8];

 40%11=7   將40放A[7];

 27%11=5     將27放A[5];

 21%11=10    因為A[10]已被佔用,遇到衝突,使用線性探測法,D(1)=(10+1 )% 11=0,A[0]沒被佔用,將21放A[0];

 57%11=2     將57放A[2];

46%11=2       因為A[2]已被佔用,遇到衝突,使用線性探測法,D(1)=(2+1 )% 11=3,A[3]沒被佔用,將46放A[3];

23%11=1       將23放A[1];

19%11=8       因為A[8]已被佔用,遇到衝突,使用線性探測法,D(1)=(8+1 )% 11=9,A[9]沒被佔用,將19放A[9];

56%11=1       因為A[1]已被佔用,遇到衝突,使用線性探測法,D(1)=(1+1 )% 11=2,A[2]被佔用,D(2)=(1+2 )% 11=3,A[3]被佔用,D(3)=(1+3 )% 11=4,將56放A[4];

成功查詢的平均長度=查詢次數總和/關鍵字總個數=(6*1+3*2+4)/10=1.6

第n個位置不成功時的比較次數為,第n個位置到第1個沒有資料位置的距離.

不成功查詢的平均長度=不成功總次數/表的長度=(7+6+5+4+3+2+1+5+4+3+2+1+1)/13=3.38.

地址 0 1 2 3 4 5 6 7 8 9 10 11 12
關鍵字 21 23 57 46 56 27 40 8 19 10
成功查詢次數 2 1 1 2 4 1 1 1 2 1
不成功查詢次數 7 6 5 4 3 2 1 5 4 3 2 1 1