代码思路
1.首先确定该数组的中间下标
mid=(left+right)/2
2.然后让需要查找的数findVal和arr[mid]比较
2.1如果findVal>arr[mid],就说明你要查找的数在arr[mid]的右边,因此需要递归的向右查找
2.2如果findVal<arr[mid],就说明你要查找的数在arr[mid]的左边,因此需要递归的向左查找
2.3findVal==arr[mid],说明找到,就返回
当找到这个数字,或者left>right时候,就退出
代码实现
public static int erfenSearch(int[]arr,int left,int right,int findVal) {
if(left>right) {
return -1;
}
int mid=(left+right)/2;
int midVal=arr[mid];
if(findVal>midVal) {
return erfenSearch(arr, mid+1, right, findVal);
}else if(findVal<midVal) {
return erfenSearch(arr, left, mid-1, findVal);
}else {
return mid;
}
public static void main(String[] args) {
int[]arr= {1,10,100,1000,123456};
int num=erfenSearch(arr, 0, arr.length-1, 1000);
System.out.println(num);