关于二分搜索两个程序的不同点讨论

sako.c 2019-10-05 10:38:40
对于二分搜索,我自己做了个程序,然后书上也有一个程序(图一为我的,图二为书上的),这两程序大体上相同,就是循环中mid的取值略有不同,我问了我老师,她说我的程序多了一次比较?? 我有点没明白。而对于这两个程序,我也拿数据测试过,处理速度差不多 ,就是有个别数据循环的次数会有不同,我的有时候循环次数会比书上的少,当然也有数据是它循环次数更少。所以我想问问大佬们更倾向于哪种
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sako.c 2019-10-05
  • 打赏
  • 举报
回复
引用 2 楼 與蘤舊縐的回复:
前面写的有点问题,这个二分法找x的时候把两端也考虑进去了(也就是闭区间),所以在mid与mid-1之间不可能存在x,即使mid-1等于x,在下一次还是被考虑在内的,所以大可以缩小范围
嗯,第二个程序确实是闭区间,我拿数据试了,我的那个程序的范围是left到right-1,right是不包括的,从这点上来说我的确实显得更为不足
「已注销」 2019-10-05
  • 打赏
  • 举报
回复
有的时候你比较快主要是mid=(left+right)/2直接删去了小数位,有可能是你算出来的mid其实离x更远,比如x是1,mid实际是1.9,变成了1就找到了x,但是下面的程序算出来的mid实际是0.9,但是变成了0
「已注销」 2019-10-05
  • 打赏
  • 举报
回复
前面写的有点问题,这个二分法找x的时候把两端也考虑进去了(也就是闭区间),所以在mid与mid-1之间不可能存在x,即使mid-1等于x,在下一次还是被考虑在内的,所以大可以缩小范围
「已注销」 2019-10-05
  • 打赏
  • 举报
回复

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧