Информатика · 10 класс3 четвертьТема 7ГОСО РК 2026Базовый

Оценка сложности алгоритмов: асимптотическая O-нотация

Теория вычислительной сложности, O-нотация («О-большое»), временная и пространственная сложность, классы O(1), O(log n), O(n), O(n log n), O(n^2).

Время изучения~60 минтеория + практика
Разделы темы4 разд.пошаговый разбор
Тест темы3 вопр.с мгновенным ответом
СОР / СОЧ3 четвертьдескрипторы ГОСО

Одну и ту же задачу программист может решить десятками различных способов. Но как объективно сравнить два алгоритма и понять, какой из них лучше?

Почему нельзя просто замерить время секундомером на компьютере?

• Время на реальном ПК зависит от мощности процессора, загруженности системы другими процессами, языка программирования и скорости оперативной памяти. На мощном сервере плохой алгоритм может выполниться за 1 секунду, а на слабом ноутбуке хороший алгоритм — за 2 секунды.

Теория сложности алгоритмов оценивает не физические секунды, а количество элементарных операций в зависимости от размера входных данных n (длины массива, размера строки). Это позволяет объективно сравнивать алгоритмы независимо от типа компьютера.

Теория

Вычислительная сложность

Функция роста количества базовых операций и памяти при увеличении объема данных n.
Инвариантность

Независимость от ПК

Анализ алгоритма, не зависящий от тактовой частоты процессора и компилятора.
Раздел 2 из 4

Асимптотическая сложность описывает поведение алгоритма при устремлении размера входных данных n к бесконечности (n→∞n \to \infty). Для записи используется математическая нотация O(f(n))O(f(n)) («О-большое» / Big O Notation).

Правила вычисления O-нотации:

1. Константные множители отбрасываются: алгоритмы с формулами операций 5n5n, 100n100n и 0.5n0.5n имеют одинаковую асимптотическую сложность O(n)O(n);

2. Младшие слагаемые отбрасываются: если время работы описывается многочленом T(n)=3n2+50n+1000T(n) = 3n^2 + 50n + 1000, при больших n (например, n=1 000 000n = 1\,000\,000) слагаемое n2=1012n^2 = 10^{12} полностью доминирует над 50n=5⋅10750n = 5 \cdot 10^7. Поэтому сложность равна O(n2)O(n^2).

Математика

O-нотация (Big-O)

Верхняя асимптотическая граница скорости роста функции трудоемкости алгоритма.
Отбрасывание констант
T(n)=a⋅n2+b⋅n+c  ⟹  O(n2)T(n) = a \cdot n^2 + b \cdot n + c \implies O(n^2)
Главное внимание уделяется наивысшей степени переменной n.

Иерархия сложности от самых быстрых к самым медленным:

1. O(1)O(1) — константное время: не зависит от размера данных (доступ к элементу списка по индексу a[i], получение значения из словаря по ключу);

2. O(log⁡n)O(\log n) — логарифмическая сложность: время растет крайне медленно (бинарный поиск);

3. O(n)O(n) — линейная сложность: один цикл по массиву (поиск минимума, подсчет суммы sum(a));

4. O(nlog⁡n)O(n \log n) — квазилинейная сложность: оптимальные алгоритмы быстрой сортировки (MergeSort, QuickSort, Timsort в Python a.sort());

5. O(n2)O(n^2) — квадратичная сложность: два вложенных цикла (пузырьковая сортировка, перебор всех пар элементов);

6. O(2n)O(2^n) — экспоненциальная сложность: перебор всех подмножеств, наивные числа Фибоначчи. При n=100n = 100 программа не завершится до конца существования Вселенной!

Идеал

O(1) и O(log n)

Наивысшая скорость работы, мгновенный отклик даже на терабайтах данных.
Катастрофа

O(2^n) Экспонента

Неприменимые для больших данных алгоритмы полного комбинаторного перебора.

Помимо времени выполнения программы, инженеры обязаны оценивать и пространственную сложность (Space Complexity) — объем дополнительной оперативной памяти, требуемой алгоритму сверх самих входных данных.

Например, пузырьковая сортировка сортирует элементы прямо на месте без создания копий массива (дополнительная память O(1)O(1)), в то время как сортировка слиянием (MergeSort) требует выделения дополнительного вспомогательного массива размера O(n)O(n).

Шаг 1
Поиск вложенных циклов
Один цикл от 1 до n дает O(n); два вложенных цикла дают O(n · n) = O(n²).
Шаг 2
Анализ деления пополам
Если на каждом шаге размер задачи делится на 2 (while n > 0: n //= 2), это O(log n).
Шаг 3
Сложение и выбор максимума
O(n) + O(n²) дает итоговую сложность O(n²).
Ваш прогресс по теме25%
Шпаргалка формул10 класс
Объем растрового графического изображения:
I=X⋅Y⋅iI = X \cdot Y \cdot i[бит (байт)]
Количество цветов в палитре растрового изображения:
Kцветов=2iK_{цветов} = 2^i[цветов]
Объем цифрового несжатого аудиофайла (PCM):
I=ν⋅b⋅t⋅kI = \nu \cdot b \cdot t \cdot k[бит]
Временная сложность бинарного поиска:
T(n)=O(log⁡2n)T(n) = O(\log_2 n)[операций]
Следующая тема

Компьютерные сети: модель OSI, стек TCP/IP и IP-адресация IPv4

Перейти к теме →