代码如下:
public class BinarySearchTest1 {
/**
* 二分查找: 用二分法返回某数在升序数组中的位置
*
* @param key 目标数
* @param arr 有序数组
* @return 数组下标
*/
public static int binarySearch(int key, int[] arr) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (key > arr[mid]) {
low = mid + 1;
} else if (key < arr[mid]) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr1 = new int[]{1, 3, 5, 7};
int[] arr2 = new int[]{1, 2, 3, 4, 7};
System.out.println(binarySearch(4, arr1));
System.out.println(binarySearch(4, arr2));
}
}