二分
8/9/25Less than 1 minute
方法
int index = Arrays.binarySearch(sums, target);
//用于在已排序数组中查找某个值的位置的方法
int[] arr = {1, 3, 5, 7, 9};
System.out.println(Arrays.binarySearch(arr, 5)); // 输出 2
System.out.println(Arrays.binarySearch(arr, 6)); // 输出 -4
如果 sums 只有一个元素,并且这个元素 刚好等于 target,会正常返回下标 0
//源码:
public static int binarySearch(int[] a, int key) {
int low = 0, high = a.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // 找到了
}
return -(low + 1); // 没找到,返回插入点
}
模板:
左闭右闭: while(<=) right = mid - 1;
左闭右开:while(<) right = mid;