Используйте бинарный поиск, чтобы найти несколько элементов, которые удовлетворяют условию в Java
Насколько я понимаю, я могу использовать бинарный поиск для поиска определенного элемента в отсортированном списке. Но как насчет поиска нескольких элементов, которые удовлетворяют определенному условию? Например у меня есть сортировка intList
который содержит 10000 целых чисел. Моя задача - найти все целые числа от 2000 до 6000. Обычно я бы использовал Stream и выполнял линейный поиск следующим образом:
int min = 2000;
int max = 6000;
Predicate<Integer> predicate = i -> i >= min && i <= max;
List<Integer> intBetweenMinandMax = intList.stream().filter(predicate).collect(Collectors.toList());
Есть ли способ для меня использовать бинарный поиск, чтобы ускорить процесс в этом случае? Или бинарный поиск не является хорошим решением, и есть еще более быстрый или умный способ сделать это?