链地址法作为解决冲突

设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33,24,8,17,21,10),用链地址法作为解决冲突的方法,平均查找长度是

1.5

33%7 = 5
24%7 = 3 //第一次出现3
8%7 = 1
17%7 = 3 //第二次出现3,所以找17会先找24
21%7 = 0
10%7 = 3 //第三次出现3,找10要先找17,24
(1+1+1+2+1+3)/6 = 1.5

哈希查找:
地址见:
添加链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,根据散列函数H(k)=k mod 7,可以得到关键字的散列地址如下: 25 -> 4 31 -> 3 8 -> 1 37 -> 2 13 -> 6 40 -> 5 1. 线性探测: 用线性探测解决冲突时,如果发生冲突,就顺序往后查找空闲位置,直到找到一个空闲位置为止。因此,对于每个插入的关键字,需要计算出它的探测序列,即依次查找的位置序列,直到找到该关键字或一个空闲位置为止。插入时,如果探测序列长度超过散列表长度,则认为插入失败。下面是每个关键字的探测序列: 25 -> 4 31 -> 3, 4, 5, 6, 0, 1 8 -> 1 37 -> 2 13 -> 6, 0, 1, 2, 3 40 -> 5, 6, 0, 1, 2 根据探测序列,可以得到每个关键字的平均查找长度,即查找次数除以插入的关键字数。这里,插入的关键字数为6。计算结果如下: ASL = (1 + (1+4+1) + 1 + 1 + (1+4+1+1+1)/5 + (1+4+1+1+1)/5) / 6 = 2.17 因此,用线性探测作为解决冲突的平均查找长度为2.17。 2. 地址: 用地址解决冲突时,将散列到同一个地址关键字存储在一个表中,每个表的头节点存储在散列表对应的地址中。因此,对于每个插入的关键字,需要将它插入到对应表的末尾。下面是每个地址对应表的情况: 0 -> NULL 1 -> 8 -> NULL 2 -> 37 -> NULL 3 -> 31 -> NULL 4 -> 25 -> NULL 5 -> 40 -> NULL 6 -> 13 -> NULL 根据长度,可以得到每个地址的平均查找长度,即长度除以插入到该表中的关键字数。这里,插入的关键字数为6。计算结果如下: ASL = ((0+1+1+1+1+1)/6 + (0+1)/2 + (0+1)/2 + (0+1)/2 + (0+1)/2 + (0+1)/2 + (0+1)/2) / 6 = 0.5 因此,用地址作为解决冲突的平均查找长度为0.5。 综上所述,用地址的平均查找长度更小,因此更适合解决该问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒椒。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值