散列表查詢成功和不成功時的平均查詢長度
已知散列表長度為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 |