赞
踩
例题:
采用哈希函数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
查找不成功的平均查找长度:(不算关键字空的散列地址的比较次数)
ASL=(5+4)/13=9/13
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。