PAT甲级1145 Hashing - Average Search Time (25分) 二次探测法知识点讲解

博客探讨PAT甲级试题中关于二次探测法和平均查找时间的问题,详细解释了二次探测法的冲突解决策略,并提供了计算平均查找时间的公式。内容包括如何在哈希表中应用二次探测法处理冲突,以及在查找过程中如何判断失败和成功。此外,还分享了可靠的代码参考和知乎上的相关讨论。

这道题需要额外补充的知识点是Quadratic probing和Average Search Time。题目都没有解释,需要知识储备,所以当年不知道这道题是难倒了多少人。

题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805343236767744

Quadratic probing (二次探测法)

简而言之,探测间隔为平方数。

处理冲突的函数为 H(key)=(key+i*i)%TSize   {i=1,2,3,...}

本题的哈希函数为H(key)=key%TSize,也就是说,大小为5的数组,数字10放在第0位,因为10%5=0。

如果第0位已经有人了,处理冲突的办法就是10+1*1=11,11%5=1,去找第1位。

如果第1位已经有人了,处理冲突的办法就是10+2*2=14,14%5=4,去找第4位。

如果第4位已经有人了,处理冲突的办法就是10+3*3=19,19%5=4,去找第4位。

这个时候肯定是不行的了,要说 10 cannot be inserted.

Average Search Time (平均查找时间)

题目给出了计算的公式:查找的次数 / 查找的元素个数。

注意:

1.每次查找还是要按二次探测法来查找,不是挨个找,而且上面公式的那个i的范围是0到TSize。

所以查找的总次数=【每次查找不同取值j的个数】的和。

2.查找失败的标志是理应插入的位置上为0,不是别的数(否则就是碰撞)或者自己(否则就是查找成功)

所以查找时需要判断v[pos]==0,是的话要跳出查找,并且这个过程对查找次数的贡献也是跟查找成功的过程一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值