К практике
Начальныйалгоритмыпоисксортировка
🔍Juniorалгоритмыпоисксортировкабинарный поиск
Базовые алгоритмы
Линейный поиск, бинарный поиск и сортировка — три фундаментальных алгоритма которые надо знать.
🧮Алгоритмы — пошаговая визуализация
Ищем число 31 в массиве. Проверяем каждый элемент по очереди слева направо.
30
71
122
183
254
315
446
567
728
899
Нажми «Следующий шаг» чтобы начать
Шаг 0 из 6
В худшем случае — проверим все 10 элементов. Сложность: O(n)
Шаг 1 из 3Практика
1
Линейный поиск
Самый простой алгоритм поиска
Линейный поиск — это когда ты перебираешь все элементы по одному, пока не найдёшь нужный (или не убедишься что его нет).
Аналогия из жизни: ищешь нужную книгу в стопке — берёшь каждую и смотришь название, пока не найдёшь.
javascript
// Найти индекс числа в массиве
function linearSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) {
return i; // нашли — возвращаем индекс
}
}
return -1; // не нашли — возвращаем -1
}
const numbers = [3, 7, 12, 31, 56, 89];
linearSearch(numbers, 31); // 3 (индекс)
linearSearch(numbers, 99); // -1 (не нашли)Когда применять
Плюсы:
- Работает с любым массивом — неотсортированным, строками, объектами
- Простой код — легко написать и понять
- Для маленьких массивов (до ~50 элементов) — достаточно быстрый
Минусы:
- Медленный на больших данных
- В худшем случае перебираем все элементы
Сложность: O(n)
javascript
Массив из 10 элементов → до 10 проверок
Массив из 1 000 → до 1 000 проверок
Массив из 1 000 000 → до 1 000 000 проверокВремя растёт пропорционально размеру — это и есть O(n).
Частный случай: indexOf
В JavaScript не нужно писать линейный поиск вручную — массивы имеют встроенные методы:
javascript
const fruits = ["яблоко", "банан", "груша", "манго"];
fruits.indexOf("груша") // 2 — индекс или -1
fruits.includes("банан") // true — просто да/нет
fruits.find(f => f.length > 5) // "яблоко" — первый подходящий элемент
fruits.findIndex(f => f === "манго") // 3 — индекс найденногоВсе они работают как линейный поиск — O(n).
У тебя массив из 1000 элементов. В среднем сколько проверок сделает линейный поиск?