Пример
Озадачился бинарным поиском. Возникла проблема - он работает только "вверх".
Т.е. если в массиве типа [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] я буду искать 9, то она найдется, но все предыдущие цифры выдают none.
Пробовал менять цикл, результат все тот же. В чем может быть косяк?
Как это работает:
Используем
min = 0;
max = длина массива - 1 (получаем максимальный индекс);
mid = (min + max) / 2 и округляем в меньшую сторону - получаем индекс центрального элемента в массиве.
Когда вводим число в поиск, сравниваем его с элементом под индексом mid.
Если равенство верно - выводим в консоль результат.
Если элемент под индексом mid больше, чем число, которое мы ищем, то max = mid - 1, далее находим mid для нового интервала и повторяем до результата.
Аналогично, если элемент под индексом mid меньше, чем число, которое мы ищем, то min = mid + 1, далее находим mid для нового интервала и повторяем до результата.