Точка вставки массива Java binarySearch()



Согласно документации для массивов.binarySearch(int[] a, int key)




Возвращает:



Индекс ключа поиска, если он содержится в массиве;
в противном случае (-(точка вставки) - 1). Точка вставки определяется как
точка, в которой ключ будет вставлен в массив: индекс
первого элемента больше, чем ключ, или A. Длина, если все элементы
в массиве меньше указанного ключа. Обратите внимание, что это
гарантирует, что возвращаемое значение будет >= 0 если и только если ключ
не найти.




Мне нужно понять, почему его возвращение (-(insertion point) - 1), почему не просто -(insertion point)?

664   2  

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

    Ничего не найдено.