关于折半查找平均查找成功长度的推导(数据结构 邓俊辉)

本文源自《数据结构》邓俊辉的讲解,探讨了折半查找中平均查找成功长度的推导过程。作者在理解递推公式C(k)时遇到困难,通过参考CSDN论坛的解答,澄清了一个误解:C(k-1)应视为下一层的总比较次数,而非上一层某部分的比较次数。正确理解是,要将C(k-1)视为a层左侧的比较次数,需要加上2^(k-1),因为a层进入b层左分支会增加2^(k-1)次比较失败。同样,b层右侧亦然。
摘要由CSDN通过智能技术生成

来源:<<数据结构>> 邓俊辉

上述C(k)的递推公式看了好久都没看懂(深刻受到清华的降维打击,差点放弃学习)。

期间主要参考了如下帖子:

https://ask.csdn.net/questions/699067,其回答对于我,起到了非常重要的作用。

对于C(k)来说,我的理解、或者大家有误的理解是:C(k)=C(k-1)+ +2+C(k-1)+ 2 。按照上述回答的理解,C(k-1)是下一层实例得到的总比较次数。1表示一次比较失败,2表示两次比较成功,2表示两次比较失败。

其中错误的地方在于C(k-1)是只能看作b层左右两个部分的总比较次数,而不能看作a层元素2左右两部分的总比较次数。要想把C(k-1)看作a层左边部分的总比较次数,就需要加上2^(k-1)。因为上述回答也提到,我们可以理解a层左边部分的总比较次数比b层左分支的总比较次数多了2^(k-1),因为a层想要进入b层左分支,那么b层左分支所有元素的比较次数都需要加1次失败的比较,而b层左分支共有2^(k-1)个元素,故不难得出。b层右侧同理。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值