Бинарный поиск JavaScript: методы реализации и примеры

Вот несколько методов реализации бинарного поиска в JavaScript:

Метод 1: итеративный двоичный поиск:

function binarySearch(arr, target) {
  let low = 0;
  let high = arr.length - 1;

  while (low <= high) {
    let mid = Math.floor((low + high) / 2);

    if (arr[mid] === target) {
      return mid;
    } else if (arr[mid] < target) {
      low = mid + 1;
    } else {
      high = mid - 1;
    }
  }

  return -1; // Target not found
}

Метод 2. Рекурсивный двоичный поиск:

function binarySearchRecursive(arr, target, low, high) {
  if (low > high) {
    return -1; // Target not found
  }

  let mid = Math.floor((low + high) / 2);

  if (arr[mid] === target) {
    return mid;
  } else if (arr[mid] < target) {
    return binarySearchRecursive(arr, target, mid + 1, high);
  } else {
    return binarySearchRecursive(arr, target, low, mid - 1);
  }
}

Метод 3: Array.prototype.indexOf():

function binarySearchIndexOf(arr, target) {
  return arr.indexOf(target);
}

Метод 4: Array.prototype.findIndex():

function binarySearchFindIndex(arr, target) {
  return arr.findIndex((element) => element === target);
}

Метод 5: lodash.sortedIndex():

const _ = require('lodash');
function binarySearchLodash(arr, target) {
  return _.sortedIndex(arr, target);
}

Обратите внимание, что в приведенных примерах кода предполагается, что входной массив arrотсортирован в порядке возрастания.