PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Какие алгоритмы важны на практике и как их применять?

Продвинутые темы

Важные алгоритмы: сортировки, поиск (линейный, бинарный), обход структур (деревья, графы), работа с хеш-таблицами, «два указателя», скользящее окно. На фронте применяются для эффективной обработки данных.

Практичные алгоритмы

Поиск

  • Линейный — O(n), по любым данным.
  • Бинарный — O(log n), по отсортированным.
  • Хеш-поиск — O(1), по ключу (Map/Set) — для быстрых проверок:
const set = new Set(ids);
set.has(id); // O(1) вместо array.includes O(n)

Сортировки

Встроенный sort (Timsort O(n log n)); понимание сложности для больших данных.

Обход структур

  • Деревья — DOM, комментарии, меню (рекурсия/стек).
  • Графы — BFS/DFS для связей, маршрутов.

Хеш-таблицы

Быстрый доступ/дедупликация (Map, Set) — самое частое на практике:

const byId = new Map(items.map((i) => [i.id, i])); // O(1) доступ
const unique = [...new Set(arr)]; // дедупликация

Техники

  • Два указателя — пары, палиндромы.
  • Скользящее окно — подстроки, подмассивы.
  • Мемоизация/DP — кеш вычислений.

Применение на фронте

  • Оптимизация обработки списков (правильные структуры вместо вложенных циклов).
  • Виртуализация, дебаунс/троттлинг.
  • Понимание сложности для производительности.

Коротко для собеседования

Практичные алгоритмы: поиск (линейный O(n), бинарный O(log n), хеш O(1) через Map/Set), сортировки (встроенный Timsort), обход деревьев/графов (BFS/DFS), хеш-таблицы (быстрый доступ, дедупликация), два указателя, скользящее окно, мемоизация. На фронте — для эффективной обработки данных (Map/Set вместо вложенных циклов) и понимания сложности.

Другие вопросы раздела