Для описания сложных структур данных и алгоритмов в информатике используют различные математические обозначения, например Big O. habr.com www.geeksforgeeks.org
Big O показывает, как будет меняться производительность алгоритма в зависимости от роста входящих данных. habr.com Некоторые обозначения и их смысл:
- O(1) — константная сложность, время выполнения алгоритма не зависит от размера входных данных. habr.com Пример — доступ к элементу массива по индексу. habr.com
- O(log n) — логарифмическая сложность, время выполнения алгоритма растёт медленно с увеличением размера входных данных. habr.com Пример — бинарный поиск в отсортированном массиве. habr.com
- O(n) — линейная сложность, время выполнения алгоритма пропорционально размеру входных данных. habr.com Пример — просмотр всех элементов в массиве. habr.com
- O(n log n) — линейно-логарифмическая сложность, время выполнения алгоритма растёт быстрее, чем линейно, но медленнее, чем квадратично. habr.com Пример — сортировка слиянием (merge sort). habr.com
- O(n^2) — квадратичная сложность, время выполнения алгоритма зависит от квадрата размера входных данных. habr.com Пример — сортировка пузырьком (bubble sort). habr.com
- O(n^3) — кубическая сложность, время выполнения алгоритма зависит от размера входных данных в кубе. habr.com Пример — алгоритмы с тремя вложенными циклами, такие как некоторые методы многомерной обработки данных. habr.com
- O(n!) — факториальная сложность, самая высокая степень роста времени выполнения алгоритма. habr.com Этот тип сложности встречается, например, при переборе всех возможных комбинаций элементов. habr.com
Кроме Big O, для оценки сложности алгоритмов также используют обозначения Big Theta (Θ), Big Omega (Ω), Little O (o) и Little Omega (ω). habr.com
Эти обозначения помогают более точно определить сложность алгоритма и учитывать как наихудший, так и лучший случай его работы. habr.com