Поиск элемента в отсортированном массиве методом бинарного поиска

Используйте границы диапазона и сравнение с его серединой. На каждом шаге отбрасывается половина элементов; для 9 в данном массиве результат равен 4.

Короткий ответ

Что ответить на собеседовании

Используйте границы диапазона и сравнение с его серединой. На каждом шаге отбрасывается половина элементов; для 9 в данном массиве результат равен 4.

Подробный разбор

Ответ с пояснениями

Условие

Дана упорядоченная последовательность чисел. Требуется определить позицию заданного значения в массиве: если значение присутствует — вернуть его индекс, если отсутствует — вернуть -1.

const sortedArr = [-1, 0, 3, 5, 9, 12];
console.log(binarySearch(sortedArr, 9)); // 4

Ответ

Используйте границы диапазона и сравнение с его серединой. На каждом шаге отбрасывается половина элементов; для 9 в данном массиве результат равен 4.

function binarySearch(array, target) {
  let left = 0, right = array.length - 1;
  while (left <= right) {
    const mid = left + Math.floor((right - left) / 2);
    if (array[mid] === target) return mid;
    if (array[mid] < target) left = mid + 1;
    else right = mid - 1;
  }
  return -1;
}

Массив должен быть отсортирован по возрастанию; пустой массив даёт -1. При дубликатах возвращается один из подходящих индексов, не обязательно первый. Время O(log n), дополнительная память O(1). Проверять сортировку внутри каждого поиска не нужно: это превратит операцию в линейную.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее