Эффективность работы числового алгоритма при больших значениях определяется с помощью временной и пространственной сложности. proglib.io vk.com
Временная сложность показывает, как растёт время выполнения алгоритма при увеличении входных данных. proglib.io Для этого считают количество операций, которые должен выполнить алгоритм. proglib.io Некоторые виды временной сложности:
- O(1) — постоянное время. vk.com Время выполнения алгоритма не зависит от размера входных данных. proglib.io vk.com
- O(log n) — логарифмическое время. proglib.io habr.com Время выполнения алгоритма растёт медленно с увеличением размера входных данных. habr.com Пример — бинарный поиск в отсортированном массиве. proglib.io habr.com
- O(n) — линейное время. proglib.io habr.com Время выполнения алгоритма пропорционально размеру входных данных. habr.com
- O(n log n) — линейно-логарифмическое время. proglib.io habr.com Время выполнения алгоритма растёт быстрее, чем линейно, но медленнее, чем квадратично. habr.com
- O(n^2) — квадратичное время. proglib.io habr.com Время выполнения алгоритма зависит от квадрата размера входных данных. habr.com
- O(2^n) — экспоненциальное время. proglib.io vk.com Время выполнения алгоритма растёт экспоненциально по отношению к размеру входных данных. proglib.io
- O(n!) — факториальное время. proglib.io habr.com Время выполнения алгоритма растёт как факториал размера входных данных. proglib.io
Пространственная сложность алгоритма измеряет объём памяти, которую он использует в зависимости от размера входных данных. proglib.io На неё влияют несколько факторов, включая количество переменных, тип и размер структуры данных, вызовы функций и способ выделения памяти. proglib.io
Для оценки эффективности алгоритмов используют нотацию «О большое», которая показывает, как будет меняться оптимальность алгоритма по мере увеличения размера входных данных. wiki.merionet.ru