【数据结构】分离链接法和平方探测法相关例题

现有数据序列{4371,1323,6173,4199,4344,9679,1989}和散列函数h(x)=x mode 10。

(1)请画出用分离链接法表示的散列表(5分)

(2)请画出用平方探测法f(i)=i*i表示的散列表(5分)

(3)请计算前两题中散列表的装载因子和查找成功的平均查找长度ASL(5分)

(1)分离链接法

0   
14371  
2   
313236173 
44344  
5   
6   
7   
8   
9419996791989

将现有的数据序列{4371,1323,6173,4199,4344,9679,1989}依次代入到散列函数h(x)=x mode 10中,得到相应的结果

(2)平方探测法

 empty tableafter 4371after 1323after 6173after 4199after 4344after9679after1989
0      96799679
1 4371437143714371437143714371
2        
3  132313231323132313231323
4   61736173617361736173
5     434443444344
6        
7        
8       1989
9    4199419941994199

首先,对第一位的4371代入到散列函数中进行计算,得到结果为1,放入到1位置中

第二位1323,得到结果为3,放到3位置中

第三位6173,得到结果为3,与1323发生了冲突,那么i=0不符合,将i=1代入,i*i=1,得到结果为4,放到4位置中

第四位4199,得到结果为9,放到9位置中

第五位4344,得到结果为4,与6173发生了冲突,那么i=0不符合,将i=1代入,i*1=1,得到结果为5,放到5位置中

第六位9679,得到结果为9,与4199发生了冲突,那么i=0不符合,将i=1代入,i*i=1,得到结果为0,放到0位置中

第七位1989,得到结果为9,与4199发生了冲突,那么i=0不符合,将i=1代入,i*i=1,得到结果为0,与9679发生了冲突,说明i=0不符合,将i=2代入,i*i=4,得到结果为3,与1323发生了冲突,说明i=2不符合,将i=3代入,i*i=9,得到结果为8,放到8位置中

(3)ASL

装载因子很显然是0.7,7/10=0.7

首先,我们来看分离链接法中的ASL应该怎么计算,查找成功的ASL说明就是要能够找到的次数,那么很显然,在分离链接法中有4个数据只需要查找一次,分别是4371、1323、4344、4199,有2个数据要查找两次,分别是6173、9679,还有1个数据需要查找三次,是1989

得到查找成功的ASL=(4*1+2*2+1*3)/7=11/7

其次,是平方探测法中的ASL

由平方探测法可得,4371、1323、4199只需要查找一次,6173、4344、9679需要查找两次,1989需要查找3次

最后得到查找成功的ASL=(1*3+2*3+3*1)/7=12/7

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值