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

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

上述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层右侧同理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章