Сложность современных компьютерных алгоритмов заключается в количестве ресурсов (времени или памяти), необходимых для решения проблемы или выполнения задачи. www.geeksforgeeks.org
Временная сложность относится к количеству времени, затрачиваемому алгоритмом на получение результата в зависимости от размера входных данных. www.geeksforgeeks.org Сложность по памяти — к объёму памяти, используемой алгоритмом. www.geeksforgeeks.org
Некоторые виды сложности алгоритмов:
- Константная сложность (O(1)). habr.com Время выполнения алгоритма не зависит от размера входных данных. habr.com Например, доступ к элементу массива по индексу. habr.com
- Логарифмическая сложность (O(log n)). habr.com Время выполнения алгоритма растёт медленно с увеличением размера входных данных. habr.com Например, бинарный поиск в отсортированном массиве. habr.com
- Линейная сложность (O(n)). habr.com Время выполнения алгоритма пропорционально размеру входных данных. habr.com Например, просмотр всех элементов в массиве. habr.com
- Квадратичная сложность (O(n^2)). habr.com Время выполнения алгоритма зависит от квадрата размера входных данных. habr.com Например, сортировка пузырьком. habr.com
- Кубическая сложность (O(n^3)). habr.com Время выполнения алгоритма зависит от размера входных данных в кубе. habr.com Например, алгоритмы, которые имеют три вложенных цикла, такие как некоторые методы многомерной обработки данных. habr.com
- Факториальная сложность (O(n!)). habr.com Это самая высокая степень роста времени выполнения алгоритма. habr.com Время выполнения алгоритма растёт факториально от размера входных данных. habr.com Этот тип сложности встречается, например, при переборе всех возможных комбинаций элементов. habr.com
Разработчики алгоритмов стремятся разрабатывать алгоритмы с минимально возможными затратами времени и памяти, поскольку это делает их более эффективными и масштабируемыми. www.geeksforgeeks.org