/*
二分查找算法-采用递归的方法实现
*/
public class binarySearch {
public static void main(String[] args) {
//测试集
int[] arr = new int[]{1,8,10,89,1000,1234};
int res = binarySearch1(arr,0, arr.length-1,1111);
System.out.println(res);
}
//返回值为元素在数组中的下标
/**
* 4个形参
* @param arr 执行操作的数组
* @param left 左子针
* @param right 右子针
* @param findval 要查找的值
* @return 返回要查找值的索引下标 若没有找到就返回-1
*/
public static int binarySearch1(int[] arr,int left,int right,int findval){
//当left > right 时,说明递归整个数组,没有找到值
if(left > right){
return -1;
}
//首先拿到中间索引
//遇到计算得到的小数,这里会自动类型转化为整数
int mid = (left + right)/2;
int midval = arr[mid];
if(findval > midval){//此时需要向右递归
//这里的mid+1 相当于直接把数组缩小一半
return binarySearch1(arr,mid+1,right,findval);
}else if(findval < midval){//向左递归
//在这里mid本身不等于要查找的值,所以mid-1
return binarySearch1(arr,left,mid-1,findval);
}else{
//最后递归返回的结果都归结到这里
return mid;
}
}
}
二分查找-递归实现(java)
最新推荐文章于 2024-07-21 22:27:18 发布