Двоичный поиск может быть неэффективен в следующих случаях:
- Если массив короткий. 3 Для бинарного поиска необходимо упорядочить данные по возрастанию, а сложность сортировки — не менее O(n log n). 3 Поэтому, если список короткий, лучше использовать линейный поиск. 3
- Если функция нестрого возрастает и нестрого убывает, а именно если в ней есть отрезки постоянства, то алгоритм не работает. 2 В случае, когда значения функции равны, нельзя понять, с какой стороны искать максимум — он может быть с любой стороны. 2
В большинстве случаев при грамотной реализации двоичный поиск эффективен, но для его нормального функционирования необходимо заранее отсортировать массив нужным образом. 1