Согласно документации:
public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
Выполняет поиск в указанном массиве указанного объекта с использованием алгоритма двоичного поиска.
Массив должен быть отсортирован в порядке возрастания в соответствии суказанный компаратор (как методом sort (T [], Comparator)) перед выполнением этого вызова.
Если он не отсортирован, результаты не определены.Если массив содержит несколько элементов, равных указанному объекту, нет гарантии, какой из них будет найден.
Означает ли это, что метод Arrays.binarySearch
можно использовать только при сортировке массивав порядке возрастания ?
Я проверил это, как показано ниже
class Unturned {
public static void main(String[] args) {
String[] chars = {"a", "b", "c", "e","f","h","i"};
MySort ms = new MySort();
Arrays.sort(chars, ms);
for(String c : chars ) System.out.print(c + " ");
System.out.println("\n" + Arrays.binarySearch(chars, "d", ms));
}
static class MySort implements Comparator<String> {
public int compare(String a, String b) {
return b.compareTo(a);
} } }
output:
i h f e c b a
-5
-5 помещает точку вставки в элемент со значением c, которое является правильным.(т.е. -4-1).
Почему в документации говорится, что массив должен быть отсортирован в порядке возрастания?