Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: binary search, sorted array, nearest element, algorithm

Если массив отсортирован — как ускорить поиск ближайшего элемента?

Проверяет знание алгоритма бинарного поиска для нахождения ближайшего элемента в отсортированном массиве.

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

Для ускорения поиска ближайшего элемента в отсортированном массиве используется бинарный поиск. Он делит массив пополам на каждом шаге, сравнивая искомое значение со средним элементом. Это позволяет найти позицию для вставки или ближайший элемент за O(log n) вместо O(n) при линейном поиске. После нахождения позиции нужно сравнить соседние элементы, чтобы определить ближайший.

Длинный ответ

Бинарный поиск для ближайшего элемента

Когда массив отсортирован, линейный поиск (проход по всем элементам) неэффективен. Бинарный поиск позволяет найти элемент или его ближайшее значение за логарифмическое время. Суть алгоритма: на каждом шаге мы сравниваем искомое значение со средним элементом массива и отбрасываем половину, где элемент точно не может находиться.

Как это работает

Мы ищем позицию, куда можно вставить искомое значение, сохраняя порядок сортировки. Затем проверяем два соседних элемента — слева и справа от этой позиции — и выбираем тот, разница с которым минимальна. Если массив пуст или содержит один элемент, ответ очевиден.

Пример кода на JavaScript

function findNearest(arr, target) {
  if (arr.length === 0) return null;
  let left = 0, right = arr.length - 1;
  while (left < right) {
    const mid = Math.floor((left + right) / 2);
    if (arr[mid] === target) return arr[mid];
    if (arr[mid] < target) left = mid + 1;
    else right = mid;
  }
  // left — позиция для вставки
  if (left === 0) return arr[0];
  if (left === arr.length) return arr[arr.length - 1];
  // Сравниваем соседей
  const prev = arr[left - 1];
  const next = arr[left];
  return Math.abs(prev - target) <= Math.abs(next - target) ? prev : next;
}

Где применяется

  • Поиск ближайшей точки на карте по координатам (если данные отсортированы).
  • В базах данных для поиска по индексу (B-деревья используют похожий принцип).
  • В игровых движках для определения ближайшего объекта.

Вывод: Бинарный поиск — стандартный и эффективный способ ускорить поиск в отсортированных данных. Его стоит применять везде, где массив отсортирован и требуется найти элемент или его ближайшее значение, так как это даёт значительный прирост производительности по сравнению с линейным перебором.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#binary search

#sorted array

#nearest element

#algorithm

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.