Точка вставки массива Java binarySearch()
Согласно документации для массивов.binarySearch(int[] a, int key)
Возвращает:
Индекс ключа поиска, если он содержится в массиве;
в противном случае (-(точка вставки) - 1). Точка вставки определяется как
точка, в которой ключ будет вставлен в массив: индекс
первого элемента больше, чем ключ, или A. Длина, если все элементы
в массиве меньше указанного ключа. Обратите внимание, что это
гарантирует, что возвращаемое значение будет >= 0 если и только если ключ
не найти.
Мне нужно понять, почему его возвращение (-(insertion point) - 1), почему не просто -(insertion point)?
2 ответов:
Потому что если он вернул
-(insertion point), и точка вставки была 0, то вы не сможете отличить я нашел его, он находится в индексе 0, и я его не нашел, Вы можете вставить в индекс 0.
Рассмотрим массив:
Теперь рассмотрим эти два бинарных оператора поиска:int intArr[] = {5,12,20,30,55};System.out.println("The index of element 5 is : " + Arrays.binarySearch(intArr,5));И
System.out.println("The index of element 4 is : " + Arrays.binarySearch(intArr,4));Вывод
The index of element 5 is : 0 The index of element 4 is : -1Благодаря этому
-1мы можем различать два выхода. Если бы не было-1, то оба эти утверждения дали бы один и тот же результат, т. е.0.
Comments