在刷题的时候遇到许多二分查找的题目

发现很多大佬的题解中mid值得计算都是用的:mid = low + (high-low)/ 2;

为什么不用mid = (low+high)/ 2的计算方法呢?

int类型是一种数据类型,用于定义整数类型变量的标识符,是带符号整数。

在现在对计算机中,int 占用 4 字节,32 比特,数据范围为:-2147483648 ~ 2147483647 [-2^31 ~ 2^31-1]

那么对于两个都接近 2147483647 的数字而言,它们相加的结果将会溢出,变成负数。

所以,为了避免溢出情况的发生,

我们不能使用 mid = (left + right) / 2 来计算 mid 值,

而是使用 mid = left + (right - left) / 2 来作为替代。

最新文章

  1. 受限玻尔兹曼机(RBM)学习笔记(二)网络结构
  2. Leetcode: Max Sum of Rectangle No Larger Than K
  3. Andriod项目开发实战(2)——JSON和XML的区别
  4. ORACLE和SQL SERVER的数据同步常用方法
  5. 为什么同时需要IP地址和MAC地址
  6. C语言-cout<<"123"<<"45"<<endl;
  7. Linux学习——shell编程之正则表达式和字符处理命令
  8. 【NOIP模拟】LCS及方案数(DP)
  9. ●UOJ 34 多项式乘法
  10. 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法
  11. cmd切换代码页,切换字体,cmd不能输入中文
  12. LINUX第三次实践:程序破解
  13. mongoose与express
  14. dpdk中文文档
  15. bzoj千题计划184:bzoj1261: [SCOI2006]zh_tree
  16. 如何利用 jQuery 修改 css 中带有 !important 的样式属性?
  17. WEB前端开发规范文档[转]
  18. 【LeetCode】150. Evaluate Reverse Polish Notation
  19. iOS开发总结-Xcode常见错误
  20. js之瀑布流的实现

热门文章

  1. 构建api gateway之 如何给openresty打patch
  2. redis06-事务
  3. spring-in-action-初识反应式编程reactor
  4. 面试必问:JVM 如何确定死亡对象?
  5. 视觉十四讲:第十二讲_RGB-D稠密点云
  6. Zstack 鼎阳SDS6204示波器和Archiver Appliance的重度测试2
  7. 记一次完整的PHP代码审计——yccms v3.4审计
  8. Luogu P1505.[国家集训队]旅游
  9. Median String
  10. 跳板攻击之:frp代理转发