二分查找需要满足两个条件:1.必须采用顺序结构,链表不行;2.必须按照关键字大小有序排列。
public class BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[]{1,10,13,25,46,78,90,103,135,257,345,465,478,498,678,691};
System.out.println(binarySearch(arr,78));
System.out.println(binarySearch(arr,498));
}
public static int binarySearch(int[] arr,int num){
int right=arr.length-1;
int left=0;
return binarySearch(arr,num,left,right);
}
public static int binarySearch(int[] arr,int num,int left,int right){
if(left<=right){
int center=(left+right)/2;
if(arr[center]>num){
return binarySearch(arr,num,left,center-1);
}
else if(arr[center]<num){
return binarySearch(arr,num,center+1,right);
}
else
return center;
}
else
return -1;
}
}