一个简单的二分查找,如果从数组中找到解,返回其之坐标,(数组坐标从零开始),如果没有,则返回-1。
代码如下:
public class BinarySearch {
static int bSearch(int a[],int l,int r,int v)
{
int m;
while(l<=r)//可能没有要寻找的值,所以等于的时候还要再比较一次
{
m=l+(r-l)/2;
if(a[m]==v) return m;
else if(a[m]>v) r=m-1;//在0到m-1段
else l=m+1;//在m+1到r段
}
return -1;
}
public static void main(String[] args) {
int a[]={1,2,3,4,5};
System.out.println(bSearch(a,0,4,5));
int b[]={1};
System.out.println(bSearch(b,0,0,1));
}
}
示例结果:
4
0