递归(5)—— 二分查找的递归解法
分析:
全范围内二分查找 等价于三个子问题:
左边找(递归)
中间找
右边找(递归)
注意:左边找和右边找只选其一。
代码实现:
public class _15二分查找的递归解法 {
public static void main(String[] args) {
int arr[] = { 1,2,3,4,5};
System.out.println(binarySearch(arr,0,4,4));
}
//arr:传入的数组
//low、high:数组的最低和最高下标
//key:待查找的元素
private static int binarySearch(int[]arr,int low,int high,int key) {
if (low>high) {
return -1;
}
int mid = low+((high-low)>>1);
int midVal = arr[mid];
if (midVal < key) {
return binarySearch(arr, mid+1, high, key);
}else if (midVal>key) {
return binarySearch(arr, low, high-1, key);
}else {
return mid;
}
}
}
还没有评论,来说两句吧...