二分查找--Java实现
程序员文章站
2022-03-15 10:14:45
...
二分查找:前提是数组必须已经排好序,每次查询数组中间的数和目标数是否相等,相等就返回,如果大于目标数就查询左边的子数组,如果小于目标数就查询右边的子数组
package Sort;
/*
* 二分查找
*/
public class SearchTest1 {
public static void main(String[] args) {
int[] arr={-1,0,1,2,3,4,5,6};
int index=new SearchTest1().binarySearch(arr, -5);
System.out.println(index);
}
public int binarySearch(int[] arr,int n){
if(arr==null||arr.length<=0){
return -1;
}
int low=0;
int high=arr.length-1;
int middle=0;
while(high>=low){
middle=(high-low)/2+low;
if(arr[middle]==n){
return middle;
}
if(arr[middle]>n){
high=middle-1;
}else{
low=middle+1;
}
}
return -1;
}
}