基础算法练习05–二分查找2
采用递归的方式进行查找,将查到的数的位置返回,查不到则返回-1.
/**
* 递归实现二分查找
* @param arr 要查找的数组
* @param low 要从数组的什么位置开始查找
* @param high 到数组的什么位置结束
* @param target 要查找的数
* @return 返回查找的数的位置,查不到则返回-1
*/
static int binarySearch(int[] arr, int low, int high, int target) {
// 判断数组指定的区间是否存在元素,存在则查找
if (low <= high) {
// 得到中间位置
int mid = (low + high) / 2;
// 查到则将位置返回
if (target == arr[mid]) {
return mid;
}
// 目标数小于中间的数,则查询中间数左边的部分数组
if (target < arr[mid]) {
return binarySearch(arr, low, mid - 1, target);
}
// 目标数大于中间的数,则查询中间数右边的部分数组
if (target > arr[mid]) {
return binarySearch(arr, mid + 1, high, target);
}
}
// 查不到目标数,则返回-1
return -1;
}