Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Big O notation, factorial complexity, algorithm analysis, time complexity

Что означает O(N!)?

Проверяет понимание факториальной сложности алгоритмов и её практического значения.

Короткий ответ

O(N!) — это обозначение факториальной временной сложности алгоритма. Это означает, что время выполнения растёт как произведение всех чисел от 1 до N. Такая сложность встречается в алгоритмах перебора всех перестановок, например, в задаче коммивояжёра. На практике алгоритмы с O(N!) становятся невыполнимыми уже при N > 10-12.

Длинный ответ

Что такое O(N!)?

O(N!) — это обозначение факториальной временной сложности в нотации Big O. Оно описывает алгоритмы, время выполнения которых растёт пропорционально факториалу от размера входных данных N. Факториал N! — это произведение всех натуральных чисел от 1 до N: N! = 1 * 2 * 3 * ... * N.

Где встречается?

Такая сложность типична для алгоритмов, которые перебирают все возможные перестановки элементов. Классический пример — решение задачи коммивояжёра методом полного перебора, где нужно найти кратчайший маршрут через N городов, посетив каждый ровно один раз.

Пример кода

function generatePermutations(arr) {
  if (arr.length <= 1) return [arr];
  const result = [];
  for (let i = 0; i < arr.length; i++) {
    const current = arr[i];
    const remaining = arr.slice(0, i).concat(arr.slice(i + 1));
    const perms = generatePermutations(remaining);
    for (let perm of perms) {
      result.push([current].concat(perm));
    }
  }
  return result;
}
// Для массива из N элементов будет N! перестановок
console.log(generatePermutations([1,2,3]).length); // 6 = 3!

Практические ограничения

  • При N=10: 10! = 3 628 800 операций — ещё выполнимо
  • При N=20: 20! ≈ 2.4 * 10^18 — практически невыполнимо
  • При N=100: число операций превышает количество атомов во Вселенной

Вывод: алгоритмы с факториальной сложностью следует избегать в реальных проектах. Если задача требует перебора перестановок, необходимо искать приближённые решения или использовать эвристики.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#Big O notation

#factorial complexity

#algorithm analysis

#time complexity

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.