第一种是递归查找
第二种是非递归查找
public class testMain {
public static void main(String args[]){
int array[] = new int[]{1, 2, 2, 3, 4 ,5, 6 ,7 ,8};
int res = binarySearch(array, 0, 8, 4);
int res1 = binarySearch1(array, 0, 8, 4);
System.out.println("res = "+res);
System.out.println("res = "+res1);
}
//使用递归的方式
public static int binarySearch(int array[], int left, int right, int target){
if(left < right){
int mid = (left + right)/2;
if(array[mid] == target){
return mid;
}
if(target < array[mid]){
return binarySearch(array, left, mid-1, target);
}
if(target > array[mid]){
return binarySearch(array, mid+1, right, target);
}
}
return -1;
}
//使用普通的方式
public static int binarySearch1(int array[], int left, int right, int target){
while(left <= right){
int mid = (left + right)/2;
if(array[mid] == target){
return mid;
}
if(target < array[mid]){
right = mid-1;
}
if(target > array[mid]){
left = mid+1;
}
}
return -1;
}
}