代码
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1,8,10,89,1000,1234};
System.out.println(binarySearch(arr, 0, arr.length-1, 89));
}
// 二分查找算法
/**
*
* @param arr 数组
* @param left 查找时 左边的索引
* @param right 查找时 右边的索引
* @param findVal 要查找的值
* @return 如果找到就返回下标 没找到返回 -1
*/
public static int binarySearch(int[] arr, int left, int right, int findVal){
int mid = (left + right) / 2;
int midVal = arr[mid];
if (left > right) return -1;// 没有找到
if(findVal > midVal){ // 向右递归
return binarySearch(arr, mid+1, right, findVal);
}else if(findVal < midVal){ // 向左递归
return binarySearch(arr, left, mid-1, findVal);
}else {
return mid;
}
}
}
输出结果: