public static void main(String[] args){
int[] arr = {25,232,341,452,536,678,763,853,942,1422};
int searchWord = 452;
System.out.printf("二分法查找的结果是%d",binarySearch(arr,searchWord));
}
//非递归
public static int binarySearch(int[] arr,int searchWord) {
int mid = (arr.length - 1) / 2;
int left = 0;
int right = arr.length - 1;
if (searchWord < arr[left] || searchWord > arr[right]) {
return 0;
}
while (left <= right) {
if (arr[mid] > searchWord) {
right = mid - 1;
} else if (arr[mid] < searchWord) {
left = mid + 1;
} else {
return mid;
}
mid = (left + right) / 2;
}
return 0;
}
//递归实现
public static int recursionBinarySearch(int[] arr,int searchWord,int left,int right) {
if (searchWord < arr[left] || searchWord > arr[right]) {
return 0;
}
int mid = (left + right) / 2;
if (arr[mid] > searchWord) {
return recursionBinarySearch(arr, searchWord, left, mid-1);
} else if (arr[mid] < searchWord) {
return recursionBinarySearch(arr, searchWord, mid+1, right);
}else{
return mid;
}
}