思路:
首先,二分查找必须在有序数组使用,如果无序先排序
1.确定数组中间位置的下标mind=(left+right)/2;
2.要查找的数findValue和中间数进行比较,如果findValue<arr[mind],向做递归查找,如果findValue>arr[mind],向右递归查找,如果相等就返回下标。(这里默认数组顺序从小到大)
3.退出递归的情况两种
一 找到了这个数
二 根本没有这个数 left > right时,要结束递归
代码:
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {-1,3,44,56,67,77,89,6785};
int index = binarySearch(404,arr,0,arr.length-1);
System.out.println(index);
}
private static int binarySearch(int findValue, int[] arr, int left, int right){
//递归结束
if(left > right){
return -1;
}
int mind = (left+right)/2;
if(findValue > arr[mind]){
//向右递归
return binarySearch(findValue,arr,mind+1,right);
}else if (findValue < arr[mind]){
//向左递归
return binarySearch(findValue,arr,left,mind-1);
}else {
return mind;
}
}
}