Сложность алгоритмической обработки последовательностей чисел заключается в том, как объём входных данных влияет на требования к времени и объёму памяти для выполнения алгоритма. 1
Некоторые виды сложности алгоритмов:
- Константная (O(1)). 2 Вычислительная сложность не зависит от входных данных. 2 Например, если нужно получить первый элемент массива из 5 чисел, то независимо от размера массива (100, 1000 или 10 000 элементов) потребуется одна операция. 2
- Линейная (O(n)). 25 Сложность алгоритма линейно растёт с увеличением входных данных. 2 Например, удвоение размера входных данных удвоит и необходимое время для выполнения алгоритма. 2 Такие алгоритмы обычно имеют цикл по каждому элементу массива. 2
- Логарифмическая (O(log n)). 25 Сложность алгоритма растёт логарифмически с увеличением входных данных. 2 Например, в алгоритме бинарного поиска на каждом шаге половина данных отсекается, и поиск продолжается в оставшейся половине. 5
- Линеарифметическая или линеаризованная (O(n * log n)). 2 Означает, что удвоение размера входных данных увеличит время выполнения чуть более, чем вдвое. 2 Примеры алгоритмов с такой сложностью: сортировка слиянием или множеством n элементов. 2
- Квадратичная (O(n^2)). 25 Означает, что удвоение размера входных данных увеличивает время выполнения в 4 раза. 2 Например, при увеличении данных в 10 раз, количество операций (и время выполнения) увеличится примерно в 100 раз. 2 Такие алгоритмы обычно имеют вложенные циклы. 2
- Кубическая (O(n^3)). 5 Означает, что время выполнения алгоритма зависит от размера входных данных в кубе. 5 Например, в алгоритмах, которые имеют три вложенных цикла, такие как некоторые методы многомерной обработки данных. 5
- Факториальная (O(n!)). 5 Это самая высокая степень роста времени выполнения алгоритма. 5 Время выполнения алгоритма растёт факториально от размера входных данных. 5 Такой тип сложности встречается, например, при переборе всех возможных комбинаций элементов. 5