/**
* @author mccrea
* @version 1.0
* @description: 二分查找,给定一个顺序数组(从小到大排序)和一个数,返回该数在数组中的下标,没有则返回-1
* @date 2020/9/22 20:51
*/
public class BinarySearch {
public static void main(String[] args) {
int[] arr = new int[] {1, 3, 5, 6, 8, 12, 15};
int i = binarySearch(arr, 0, arr.length - 1, 15);
System.out.println(i);
}
/**
* @description:
* @param:
* @param arr 数组
* @param begin 数组左下标
* @param end 数组右下标
* @param value 待寻找的值
* @return: int
* @author mccrea
* @date: 2020/9/22 20:53
*/
public static int binarySearch(int[] arr, int begin, int end, int value) {
if (begin <= end) {
// 取出中间下标
int mid = begin + (end - begin) / 2;
// 中间数大于待寻找的数,向左边寻找
if (arr[mid] > value) {
return binarySearch(arr, begin, mid, value);
// 中间数小于待寻找的数,向右边寻找
} else if (arr[mid] < value) {
return binarySearch(arr,mid + 1, end, value);
} else {
return mid;
}
}
// 未找到,返回-1
return -1;
}
}