第9章 哈希查找(例题)

【问题】

设哈希函数 H ( K ) = 3 K   m o d   11 H(K)=3*K\ mod\ 11 ,哈希地址空间为 0 10 0~10 ,对关键字序列 ( 32 , 13 , 49 , 24 , 38 , 21 , 4 , 12 ) (32, 13, 49, 24, 38, 21, 4, 12) ,按下述两种解决冲突的方法构造哈希表,并分别求出等概率下查找成功时和查找失败时的平均查找长度 A S L s u c c ASL_{succ} A S L u n s u c c ASL_{unsucc}

(1)线性探测法;

(2)链地址法。

【解答】

(1)线性探测法:

① 计算查找每个关键字成功时需要比较的次数的平均值。
A S L s u c c = ( 1 + 1 + 1 + 2 + 1 + 2 + 1 + 2 ) 8 = 11 8 ASL_{succ} = \frac{(1+1+1+2+1+2+1+2)}{8} = \frac{11}{8}

② 计算查找不成功时的ASL时,此时看散列函数MOD的是几。看每个位置查找不成功需要比较的次数,即该位置到下一个空位的比较次数。

A S L u n s u c c = ( 1 + 2 + 1 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 ) 11 = 40 11 ASL_{unsucc} = \frac{(1+2+1+8+7+6+5+4+3+2+1)}{11}=\frac{40}{11}

注:这里求的是MOD出来的位置的平均查找失败比较次数,不是关键字个数也不是表长。

(2)链地址法:

A S L s u c c = ( 1 5 + 2 3 ) 8 = 11 8 ASL_{succ} =\frac{(1*5+2*3)}{8}=\frac{11}{8}
A S L u n s u c c = ( 1 + 2 + 1 + 2 + 3 + 1 + 3 + 1 + 3 + 1 + 1 ) 11 = 19 11 ASL_{unsucc}=\frac{(1+2+1+2+3+1+3+1+3+1+1)}{11}=\frac{19}{11}

发布了674 篇原创文章 · 获赞 103 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/103968768