/**
* 使用递归的方式实现一个二分法查找 left right middle = (left+right)/2
* 使用二分法查找的前提是 必须是一个有序列的数组
* 在使用二分法查找的时候,因为每一次用到了在哪个范围内查找,
* 所以在方法中不仅有带查找的key跟序列,还要有范围的区间
* 首先需要判断一下,左边的是否比右边小;
* 求出中间的位置,拿中间的值跟key做比较,如果相等的话,直接返回下标;
* 不然需要判断一下,key值有可能是在它的左区间还是右区间
* 如果在左区间就是left,middle-1
* 右区间就是middle+1,rihgt
* @author root
*
*/
public class BinarySercher {
public static void main(String[] args) {
int[] arr={1,2,3,4,5,6,7,9,12,14,15,16};
System.out.println(binary(arr, 4, 0, arr.length-1));
}
public static int binary(int[] arr,int key,int left,int right){
if (left>right){
return -1;
}
int middle = (left+right)/2;
if(arr[middle]==key){
return middle;
}else if(arr[middle]>key){
return binary(arr, key, left, middle-1);
}else {
return binary(arr, key, middle
, right);
}
}
}
递归实现二分法查找
最新推荐文章于 2022-02-13 16:57:45 发布