Ответ
Бинарный поиск работает за O(log n) в лучшем, среднем и худшем случаях. Сложность не убывает, так как алгоритм всегда делит массив пополам, пока не найдет элемент или не убедится в его отсутствии.
Пример:
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
Даже если элемент найден сразу (в середине), сложность остаётся O(log n), так как это верхняя граница.
Ответ 18+ 🔞
Да ты посмотри, какой народ безмозглый, блядь! Сидят, думают: "О, бинарный поиск, ну если сразу повезёт, то O(1), наверное". Да хуй там плавал, ёпта!
Этот ваш бинарный поиск — он как Герасим из рассказа, блядь: максималист, сука. Либо работает за O(log n), либо нихуя не работает. Всё, точка. Не ищет он "быстрее" в каком-то там "лучшем" случае, понимаешь? Это ж не линейный поиск, где может сразу на первый элемент наткнуться.
Вот представь: у тебя массив отсортированный. Ты его берёшь, сука, и всегда, блядь, всегда делишь пополам. Нашёл элемент посередине — отлично, но алгоритм-то заточен на то, что он будет делить и делить, пока не докопается. Поэтому сложность у него O(log n) — и в радости, и в горе, и когда Муму утопил, блядь. Это верхняя граница, она же и нижняя, потому что логика одна.
Вот, смотри, код, я его не трогаю, как велено:
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
Видишь? while (left <= right). Он будет жрать массив пополам, пока не сожрёт. Даже если target сразу в mid сидит — формально операций мало, но асимптотика-то, блядь, от этого не меняется, ёпта! O(log n) — это про рост количества операций относительно размера массива, а не про конкретный случай. Всё, приехали, в рот меня чих-пых!
Короче, запомни: бинарный поиск — O(log n), и ни хуя иначе. Не ищи тут халявы, её нет. Как нет и Муму, блядь, после того случая.