二分查詢取中間值
阿新 • • 發佈:2021-01-22
關於二分查詢取中間值的公式問題。
公式一:
int mid = (left + right) / 2; //不建議使用
公式二:
int mid = left + (right - left) / 2; //推薦使用
其實在一些涉及的數比較小的情況下,這兩種方法都是沒有問題的。但是當數值(left+right)的結果超過int範圍的時候,公式一就會出現不期望的值。
int right = 2147483647;
int left = 2147483647;
int midOne = (left+right) / 2;
int midSecond = left+ (right - left) / 2;
System.out.println("公式1結果:" + midOne);
System.out.println("公式2結果:" + midSecond);
所以在這裡推薦使用
int mid = left + (right - left) / 2;