Вот несколько методов реализации бинарного поиска в 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отсортирован в порядке возрастания.