二分法查找,递归实现
public static void main(String[] args){
int arr[] = {2,12,16,17,19,22,35,37};
int index = BinarySearch(35,0,arr.length,arr);
System.out.println(index);
}
public static int BinarySearch(int elem,int low,int high,int arr[]){
//二分法查找,递归实现
//对于有序集合,如果无序先进行排序
if(low > high) return -1;
int min = (low + high)/2;
if(arr[min] == elem) return min;
if(arr[min] > elem) return BinarySearch(elem,low,min-1,arr);
if(arr[min] < elem) return BinarySearch(elem,min+1,high,arr);
return -1;
}
二分法查找实现
//二分法查找实现
int arr[] = {2,12,16,17,19,22,35,37};
int temp = 36;
int start = 0;
int end = arr.length;
int count = 0;
while(true){
count ++;
if(count > arr.length){
System.out.println("没有找到这个数");
break;
}
int min = (start + end)/2;
if(arr[min] > temp){
end = min;
}else if(arr[min] < temp){
start = min;
}else{
System.out.println(min);
break;
}
}