Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: binary search, lower bound, upper bound, algorithm, sorted array

Что такое lower bound и upper bound в бинарном поиске?

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

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

Lower bound находит первый индекс, где элемент не меньше заданного значения. Upper bound находит первый индекс, где элемент больше заданного значения. Эти методы используются для поиска диапазона вхождений элемента в отсортированном массиве. Они реализуются через модификацию стандартного бинарного поиска с изменением условий сдвига границ.

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

Что такое lower bound и upper bound?

Lower bound и upper bound — это вариации бинарного поиска, которые позволяют находить границы вхождения элемента в отсортированном массиве. Lower bound возвращает индекс первого элемента, который не меньше заданного значения (то есть >= value). Upper bound возвращает индекс первого элемента, который строго больше заданного значения.

Как они работают?

В стандартном бинарном поиске мы ищем точное совпадение. В lower bound мы продолжаем поиск в левой части, даже если нашли элемент, чтобы найти самое левое вхождение. В upper bound мы ищем первый элемент, который больше target, сдвигая левую границу при равенстве.

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

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

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

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

  • Поиск диапазона вхождений элемента в отсортированном массиве.
  • Реализация бинарного поиска в STL (C++), Python (bisect), Java (Arrays.binarySearch).
  • Задачи на подсчет количества элементов в интервале.

Вывод: Lower bound и upper bound — это мощные инструменты для работы с отсортированными данными, позволяющие эффективно находить границы и диапазоны. Их стоит применять везде, где требуется быстрый поиск позиций вставки или подсчет элементов в интервале.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Math

    Math

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

#binary search

#lower bound

#upper bound

#algorithm

#sorted array

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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