博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中间值为什么为l+(r-l)/2,而不是(l+r)/2
阅读量:6873 次
发布时间:2019-06-26

本文共 239 字,大约阅读时间需要 1 分钟。

二分法的算法中,我们看到一些代码里取中间值:

  MID=l+(r-l)/2;

为什么是这个呢?不就是(l+r)/2吗?为什么要多此一举呢?

其实还是有不一样的,看看他们的区别吧:

  • l,r是指针的时候只能用 l+(r-l)/2

  • 当l=-200,r=-99时

    (l+r)/2=-149
    l+(r-l)/2 =-150

  • (l+r)/2可能溢出,l+(r-l)/2 而不会

  注意:如果/2写成>>1的话,要括号!!!MID=l+((r-l)>>1);不然就错了,>>的优先级别比较低。

转载地址:http://hdpfl.baihongyu.com/

你可能感兴趣的文章
PHP的错误和异常处理
查看>>
从关系型数据库到非关系型数据库
查看>>
数学书籍阅读
查看>>
Win7下硬盘安装fedora17
查看>>
externkeyword放到函数体内而导致的linkage问题
查看>>
linux常用命令 3
查看>>
Environment.SpecialFolder.CommonApplicationData
查看>>
ng-repeat-start ng-repeat-end 的使用
查看>>
Response.Redirect 打开新窗体的两种方法
查看>>
备份IIS httpd.ini 重写规则,兼容大部分版本号IISserver
查看>>
(多图) 如何快速的将16 位、12阶FIR滤波器的DSP编译到FPGA硬件上
查看>>
Java魔法堂:枚举类型详解
查看>>
[Android Traffic] 看无线电波如何影响网络操作]
查看>>
【转】Linux命令之查看文件占用空间大小-du,df
查看>>
Cadence ORCAD CAPTURE元件库介绍
查看>>
(1)ActivityThread分析
查看>>
This configuration file was broken by system-config-keyboard
查看>>
什么时候该使用NoSQL存储数据库?
查看>>
html总结
查看>>
Java知多少(上)
查看>>