StudyCode
К практике
НачальныйалгоритмыBig Oсложность
📊JuniorалгоритмыBig Oсложностьпоискструктуры данных

Алгоритмы и сложность (Big O)

Почему один код быстрее другого: Big O, поиск, сортировка и структуры данных.

Классы сложности — нажми на класс для примера
1101001K10Kn (количество элементов)
Язык примеров:
Шаг 1 из 3
1

Зачем думать об эффективности

Размер данных имеет значение

javascript
Функция делает n² операций:

  n = 100    →       10 000 операций  → мгновенно
  n = 10 000 →  100 000 000 операций  → ~1 секунда
  n = 100 000 → 10 000 000 000 операций → ~3 часа!

Алгоритм, который "работает" на 100 элементах, может быть непригоден для 100 000.

Big O — нотация сложности

Big O описывает как растёт время работы при увеличении входных данных.

Мы смотрим на худший случай и порядок роста, игнорируя константы:

javascript
5n + 100 → O(n)      (константы не важны)
n² + n   → O(n²)     (доминирует n²)

Основные классы сложности

javascript
O(1)      — константное время   (не зависит от n)
O(log n)  — логарифмическое     (очень хорошо)
O(n)      — линейное            (нормально)
O(n log n)— линейно-логарифм.  (хорошо для сортировки)
O(n²)     — квадратичное        (плохо при больших n)
O(2ⁿ)     — экспоненциальное    (очень плохо)