为什么2在数组中它返回的是-3
//int[] arr = {2,1,5,9,4,7,8,6,3};
System.out.println(Arrays.binarySearch(arr, 2));//-3
System.out.println(Arrays.binarySearch(arr, 1));//1
二分查找,要求数据是从小到大有序的,你这数据明显不符合要求
基于上述分析,可以很轻易的在Arrays.binarySearch的基础上得到插入点的下标!
import java.util.Arrays;
import java.util.Scanner;
public class OneCounting {
public static void main(String[] args) {
int[] nums = {1, 2, 2, 4, 5, 6};
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int x = in.nextInt();
int idx = Arrays.binarySearch(nums, x);
if (idx >= 0) {
System.out.println(x + "在数组中的下标是" + idx);
} else {
int insertionPoint = -(idx + 1);
System.out.println(x + "不在数组中,插入点是" + insertionPoint);
}
}
}
}