1.方式一
i,j位置的元素都进行比较
public static int binarySearch(int[] a,int target){
int i=0,j=a.length-1;
while(i<=j){
int m=(i+j)>>>1;
if(target<a[m]){
j=m-1;
}else if(a[m]<target){
i=m+1;
}else{
return m;
}
}
return -1;
}
2.方式二
i,j-1位置的元素都进行比较,j位置的元素不参与比较,所以j=m不是j=m-1
public static int binarySearch(int[] a,int target){
int i=0,j=a.length;
while(i<j){
int m=(i+j)>>>1;
if(target<a[m]){
j=m;
}else if(a[m]<target){
i=m+1;
}else{
return m;
}
}
return -1;
}