List al = new ArrayList();
al.add(100);
al.add(50);
al.add(30);
al.add(10);
al.add(2);
System.out.println("Found at index " + Collections.binarySearch(al, 100,Collections.reverseOrder()));
List al0 = new ArrayList();
al0.add(50);
al0.add(100);
al0.add(30);
al0.add(10);
al0.add(2);
System.out.println("Found at index " + Collections.binarySearch(al0, 100,Collections.reverseOrder()));
List al1 = new ArrayList();
al1.add(30);
al1.add(100);
al1.add(10);
System.out.println("Found at index " + Collections.binarySearch(al1, 100,Collections.reverseOrder()));
List al2 = new ArrayList();
al2.add(30);
al2.add(20);
al2.add(100);
System.out.println("Found at index " + Collections.binarySearch(al2, 100,Collections.reverseOrder()));
Почему вывод поиска разный?
Found at index 0
Found at index -1
Found at index 1
Found at index -1
Хотелось понять почему не работает такая реализация поиска.
Понятно что необходимо предварительно произвести обычную сортировку Collections.sort(). Хотя первый и третий поиск успешный и без нее..
Если у вас массив отсортирован в обратном порядке, то можно использовать binarySearch с reverseOrder в качестве компаратора. Если массив не отсортирован - он может не находить элемент, который в массиве есть, потому что алгоритм бинарного поиска не учитывает такого случая. Но может и найти, если звезды сойдутся. Конкретно в ваших примерах:
По порядку Хотя первый и третий поиск успешный и без нее..
Первый список нашел ответ корректно, потому что он отсортирован, вы используете реверс ордер. Третий список наше верно, потому что бинарный поиск сразу попал в него.
Чтобы понять почему не так и почему нужно использовать отсортированный массив, почитайте алгоритм бинарного поиска
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В родительском компоненте есть инициализация state
Допустим есть строка вида aaaa|qqqq|www|bbbb;ccc Я хочу задать формат в виде $1|$2|$name|$4;$5 И получить объект согласно описанному выше формату с такими же ключамиПодразумевается...
Есть код на для вывода правильной последовательности n элементов, переписал его под python, но он не работаетВ чём моя ошибка?