请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于二分查找法问题

老师,就是有一个问题,就是如果只传一个查找数组,和需要查找的值,l=0,r = 数组的长度 - 1
老师计算中间值的时候,我发现就会出现偏移问题。因为用老师视频的(r-l)/2 程序出现了死循环了,使用debug方式,我发现mid 总是会偏移1位,之前看过老师别的视频有类似的处理 用 l + (r-l + 1) / 2 就完全可以解决,并且也能快速的找到对应的元素。这个就有点迷糊,到底啥时候需要使用偏移,啥时候不用使用。

正在回答 回答被采纳积分+3

插入代码

1回答

liuyubobobo 2024-12-21 01:07:12

你说的“看过老师别的视频”应该是指我的体系课的内容,我在我的算法体系课中详细介绍过这个问题。


简单来说,如果是二分查找某个值,不存在这个问题;

只有在二分查找上界或者下界的时候(大于或者大于等于 v 的最小值;小于或者小于等于 v 的最大值),才可能出现这个问题,因为此时,二分查找可能出现死循环;

一大出现死循环,使用 l + (r-l + 1) / 2 的方式都可以解决。


是否出现死循环不需要运行程序来判断,通过查看在极端情况 l 和 r 是否可能没有变化就可以。只要 l 和 r 可能不动,就会出现死循环。


更具体的在我的体系课程中有详细介绍,课程中有几个同学的问题也和此相关,我做了详细回答,可以参考。


继续加油!:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号