Какие знаешь алгоритмы поиска

«Какие знаешь алгоритмы поиска» — вопрос из категории Алгоритмы, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Линейный поиск — простейший алгоритм, проверяющий элементы последовательно. Сложность O(n).
Пример:

function linearSearch(arr, target) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === target) return i;
  }
  return -1;
}

Бинарный поиск — работает на отсортированных массивах, делит диапазон пополам. Сложность O(log n).
Пример:

function binarySearch(arr, target) {
  let left = 0, 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;
}

Также существуют:

  • Поиск в глубину (DFS) и в ширину (BFS) для графов
  • Интерполяционный поиск — улучшенный бинарный для равномерно распределенных данных
  • Поиск Фибоначчи — вариант бинарного с делением по числам Фибоначчи