在刷題的時候遇到許多二分查找的題目
發現很多大佬的題解中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
來作為替代。