Нотация Большого O (или O-нотация) — способ описания асимптотического поведения функции, чаще всего используемый для анализа эффективности алгоритмов, т.е. того, как время выполнения или объем используемой памяти алгоритма масштабируется с увеличением размера входных данных.
Основные аспекты:
Примеры распространенных классов сложности:
| Нотация | Название | Описание | Пример операции в алгоритме |
|---|---|---|---|
| O(1) | Константное время | Время выполнения не зависит от размера входных данных. | Доступ к элементу массива по индексу. |
| O(log n) | Логарифмическое время | Время выполнения растет логарифмически с размером данных. | Бинарный поиск в отсортированном массиве. |
| O(n) | Линейное время | Время выполнения пропорционально размеру данных. | Простой перебор всех элементов в списке. |
| O(n log n) | Линейно-логарифмическое | Время выполнения растет пропорционально n * log n. | Быстрая сортировка (в среднем), сортировка слиянием. |
| O(n^2) | Квадратичное время | Время выполнения пропорционально квадрату размера данных. | Сортировка пузырьком, вложенные циклы по n элементам. |
| O(2^n) | Экспоненциальное время | Время выполнения растет экспоненциально. | Некоторые задачи полного перебора, например, задача коммивояжера (в наивных реализациях). |
python