在刷题的时候遇到许多二分查找的题目
发现很多大佬的题解中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
来作为替代。