Используйте бинарный поиск, чтобы найти несколько элементов, которые удовлетворяют условию в 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());

Есть ли способ для меня использовать бинарный поиск, чтобы ускорить процесс в этом случае? Или бинарный поиск не является хорошим решением, и есть еще более быстрый или умный способ сделать это?

0 ответов

Другие вопросы по тегам