Я думаю, что оба алгоритма в основном O (n).
n
в данном случае это размер введенного числа.
В первом алгоритме это не O (n^ 4) поскольку это предполагает, что у вас есть 4 вложенных цикла, повторяющихся n раз.Вместо этого у вас есть 4 цикла, которые работают последовательно.Если бы они вообще не модифицировали change1
, это потенциально было бы O (4n), что совпадает с O (n).
Во втором алгоритме выбор имен переменных путает вещинемного.n
является константой, а m
основано на размере ввода, поэтому то, что обычно называется n.Итак, если мы переименуем n
в c
и m
в n
, мы получим O (c * n), который, опять же, такой же, как O (n).
КлючДело в том, что для любого конкретного алгоритма n и O (n) не обязательно быстрее, чем, скажем, алгоритм O (n ^ 2).Обозначение Big O просто описывает, как объем выполненной работы зависит от размера ввода.Что он говорит, так это то, что с ростом n время, затрачиваемое алгоритмом O (n), будет увеличиваться на медленнее , чем время, затрачиваемое алгоритмом O (n ^ 2), поэтому для некоторых достаточно большихп, алгоритм с меньшей сложностью будет быстрее.