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

  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);不然就错了,>>的优先级别比较低。

最新文章

  1. ORBSLAM2与OPENCV3.1.0出错解决办法
  2. windows 7 安装 scrapy
  3. jmeter之调度器配置
  4. IOS开发--C语言入门--如何结合Terminal和Vim开发C语言程序
  5. 曾经感动过我们的文字 今天是否还有印象?——v1
  6. 【ASP.NET MVC 学习笔记】- 07 使用 Entity Framework
  7. 排序算法(二)Sort with Swap(0,*)
  8. Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境
  9. Android Studio开发环境配置以及相关说明
  10. Java~类,抽象类和接口
  11. 马昕璐 201771010118《面向对象程序设计(java)》第十五周学习总结
  12. 发现一个好工具RenderDoc
  13. layabox 1 基础
  14. 【宝塔linux】 导入mysql 大文件失败的问题
  15. nginx基础知识总结
  16. LICS O(n*m)+前驱路径
  17. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (二)
  18. 廖雪峰Java1-3流程控制-9break、continue
  19. Easy-UI开发总结
  20. 咏南中间件新增MORMOT移动端演示

热门文章

  1. poj 3468
  2. js中控制小数点的显示位数的技术整理
  3. (转载)ORA-14452:试图创建,更改或删除正在使用的临时表中的索引
  4. 利用substring()方法,把一个表的不同分级所对应的字段名取出来。
  5. tree命令的使用
  6. Nginx 启用 https
  7. Android手机浏览器访问本地网络相关问题
  8. Linux 守护进程三
  9. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
  10. mac上如何卸载oracle jdk 1.7