Каждый раз, когда мы пишем алгоритм или код, мы пытаемся проанализировать его асимптотическую сложность.
Он отличается от сложности времени .
Асимптотическая сложность - это поведение времени выполнения алгоритма, тогда как временная сложность - это фактическое время выполнения. Но некоторые люди используют эти термины взаимозаменяемо.
Поскольку сложность времени зависит от различных параметров, а именно.
1. Физическая система
2. Язык программирования
3. Стиль кодирования
4. И многое другое ......
Фактическое время выполнения не является хорошей мерой для анализа.
Вместо этого мы принимаем входной размер в качестве параметра, потому что, какой бы ни был код, входные данные одинаковы.
Таким образом, время выполнения является функцией размера ввода.
Ниже приведен пример алгоритма линейного времени
Линейный поиск
Учитывая n входных элементов, для поиска элемента в массиве вам нужно не более 'n' сравнений . Другими словами, независимо от того, какой язык программирования вы используете, какой стиль кодирования вы предпочитаете, в какой системе вы его выполняете. В худшем случае требуется только n сравнений. Время выполнения линейно пропорционально размеру ввода.
И это не просто поиск, какой бы ни была работа (увеличение, сравнение или любая другая операция), это функция размера ввода.
Так что, когда вы говорите, что любой алгоритм - это O
это означает, что время выполнения - это лог, умноженное на размер ввода n
По мере увеличения размера ввода увеличивается количество выполненных работ (здесь время выполнения) (отсюда и пропорциональность)
n Work
2 1 units of work
4 2 units of work
8 3 units of work
Смотрите, как увеличивается размер входного сигнала, увеличивается объем работы, и он не зависит от какой-либо машины.
И если вы попытаетесь выяснить стоимость единиц работы
Это на самом деле зависит от указанных выше параметров. Он будет меняться в зависимости от систем и всего.