算法题二分查找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;
}
}`


浙公网安备 33010602011771号