二分查找中mid值的计算方法


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

发现很多大佬的题解中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 来作为替代。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM