算法题二分查找1

为什么二分查找不使用mid = (right+left)/2 而使用 mid = Left + (right -Left)/2?
第一 后者不会产生溢出,而前者可能会。
第二 后者适用于对迭代器的操作,而前者者不行。
`import java.util.*;

public class Solution {
/**
* 二分查找
* @param n int整型 数组长度
* @param v int整型 查找值
* @param a int整型一维数组 有序数组
* @return int整型
*/
public int upper_bound_ (int n, int v, int[] a) {
// write code here
if(v>a[n-1]){
return n+1;
}
int start=0;
int end=n-1;
int mid=start+(end-start)/2;
while(start<end)
{
if(a[mid]>=v){
end=mid;
}
else{
start=mid+1;
}
mid=start+(end-start)/2;

    }
     return mid+1;  
}

}`

posted @ 2020-12-17 16:27  爱喝旺仔的雪雪  阅读(57)  评论(0)    收藏  举报