Алгоритми та структури даних · Middle · Запитання 13 з 75

Що поверне цей бінарний пошук, якщо target немає в масиві?

function lowerBound(arr, target) {
  let lo = 0, hi = arr.length;
  while (lo < hi) {
    const mid = (lo + hi) >> 1;
    if (arr[mid] < target) lo = mid + 1;
    else hi = mid;
  }
  return lo;
}

Пояснення

Це lower bound: перший індекс зі значенням >= target. Якщо всі значення менші, повертається arr.length. На цьому побудовано багато варіацій: підрахунок входжень, пошук діапазонів, вставка у відсортований масив.

Де почитати

Помилка в запитанні

Алгоритми та структури даних · Middle · запитання 13

Перевірте себе

Пройдіть тест Алгоритми та структури даних · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест