线性探测法:
例题:
采用哈希函数H(k)=3*k mod 13并用线性探测开放地址法处理冲突,在数列地址空间[0..12]中对关键字序列22,41,53,46,30,13,1,67,51
(1)构造哈希表(画示意图);
(2)装填因子;等概率下
(3)成功的和不成功的平均查找长度
答:(1)
散列地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
关键字 | 13 | 22 | 53 | 1 | 41 | 67 | 46 | 51 | 30 | ||||
比较次数 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 1 | 1 |
(2)装填因子:a=n/m 其中n 为关键字个数,m为表长
a=9/13
(3)查找成功的平均查找长度:每个关键字的比较次数之和/关键字的个数(即表中元素的个数)
ASL=(7+2*2)/9=11/9
查找不成功的平均查找长度:比如:查找26,即一开始找到散列地址为0,然后对比关键字后不相等,按照线性探测法向后查找,直到有一个散列地址的关键字为空,则确认查找失败;
而查找不成功的平均查找长度就是表中的每个散列地址的比较次数/表长
注意:在最后的散列地址中,如果没有空,就比如该题中的散列地址12,还要往后找,则到了0-->1-->2,总共比较了4次。
1.散列地址为0,从0-->1-->2,比较了3次
2.散列地址为1,从1-->2,比较了2次
3.散列地址为2,关键字为空,比较了1次
4.散列地址为3,从3-->4-->5,比较了3次
5.散列地址为4,从4-->5,比较了2次
6.散列地址为5,关键字为空,比较了1次
7.散列地址为6,从6-->7-->8-->9,比较了4次
8.散列地址为7,从7-->8-->9,比较了3次
9.散列地址为8,从8->9,比较了2次
10.散列地址为9,关键字为空,比较了1次
11.散列地址为10,从10-->11,比较了2次
12.散列地址为11,关键字为空,比较了1次
13.散列地址为12,从12-->0-->1-->2,比较了4次
所以ASL=(3+2+1+3+2+1+4+3+2+1+2+1+4)/13=29/13
链地址法:
例题:
采用哈希函数H(k)=2*k mod 13并用链地址法处理冲突,在数列地址空间[0..12]中对关键字序列22,41,53,46,30,13,1,67,51进行下列工作:
(1)构造哈希表(画示意图);
(2)等概率下成功的和不成功的平均查找长度。
答:(1)
0 |
→ |
13 |
^ |
||
1 |
→ |
46 |
^ |
||
2 |
→ |
53 |
→ |
1 |
^ |
3 |
^ |
||||
4 |
→ |
41 |
→ |
67 |
^ |
5 |
→ |
22 |
^ |
||
6 |
^ |
||||
7 |
^ |
||||
8 |
→ |
30 |
^ |
||
9 |
^ |
||||
10 |
^ |
||||
11 |
→ |
51 |
^ |
||
12 |
^ |
(2)查找成功的平均查找长度:
ASL=(7*1+2*2)/9=11/9
查找不成功的平均查找长度:(不算关键字空的散列地址的比较次数)文章来源:https://www.toymoban.com/news/detail-528009.html
ASL=(5+4)/13=9/13文章来源地址https://www.toymoban.com/news/detail-528009.html
总结:算查找成功的平均查找长度时除以的是表中元素的个数
查找不成功的平均查找长度时除以的是表的长度
到了这里,关于哈希表的查找成功的长度和查找不成功的长度(详细讲解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!