Бинарный поиск в JavaScript
Двоичный поиск — это поисковый алгоритм, который используется для поиска положения определенного элемента в отсортированном списке. Он работает путем многократного деления списка пополам, пока не будет найден нужный элемент или не будет определено, что элемент отсутствует в списке.
Как работает бинарный поиск?
Чтобы понять, как работает бинарный поиск, рассмотрим пример. Предположим, у нас есть отсортированный список целых чисел, и мы хотим найти позицию числа 37. Вот как будет работать алгоритм бинарного поиска:
- Сначала мы определяем средний элемент списка. Если средний элемент равен 37, мы закончили и возвращаем позицию элемента.
- Если средний элемент не равен 37, мы проверяем, больше он или меньше 37. Если он больше 37, мы знаем, что искомый элемент должен быть в левой половине списка. Если оно меньше 37, мы знаем, что искомый элемент должен находиться в правой половине списка.
- Мы повторяем процесс для соответствующей половины списка, пока элемент не будет найден или не будет определено, что элемент отсутствует в списке.
function binarySearch(arr, x) {
let start = 0;
let end = arr.length - 1;
while (start <= end) {
let mid = Math.floor((start + end) / 2);
if (arr[mid] === x) {
return mid;
}
else if (arr[mid] < x) {
start = mid + 1;
}
else {
end = mid - 1;
}
}
return -1;
}
let arr = [1, 3, 5, 7, 9, 11, 13];
let x = 5;
console.log(binarySearch(arr, x)); // Output: 2
Почему мы должны использовать бинарный поиск?
Итак, почему мы должны использовать бинарный поиск? Одним из основных преимуществ бинарного поиска является его временная сложность. В худшем случае временная сложность бинарного поиска составляет O(log n), что означает, что он намного быстрее, чем линейный поиск (O(n)) для больших списков. Это делает его эффективным алгоритмом для поиска в больших наборах данных.
В заключение, бинарный поиск — это полезный алгоритм для быстрого нахождения положения определенного элемента в отсортированном списке. Его временная сложность делает его подходящим для поиска в больших наборах данных, и его относительно легко реализовать на JavaScript.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































