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

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

Ответ

  • Сортировки: быстрая (QuickSort), слиянием (MergeSort), пузырьковая (BubbleSort).
    // QuickSort
    function quickSort(arr) {
      if (arr.length <= 1) return arr;
      const pivot = arr[0];
      const left = [], right = [];
      for (let i = 1; i < arr.length; i++) {
        arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
      }
      return [...quickSort(left), pivot, ...quickSort(right)];
    }
  • Поиск: бинарный (только для отсортированных массивов).
    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;
        arr[mid] < target ? left = mid + 1 : right = mid - 1;
      }
      return -1;
    }
  • Обход графов: BFS (по уровням), DFS (в глубину).

  • Динамическое программирование: например, числа Фибоначчи с мемоизацией.

Также знаю жадные алгоритмы (например, задача о рюкзаке) и алгоритмы работы с деревьями (обходы, балансировка).