Временная сложность алгоритма обычно измеряется как функция от размера ввода. Ваш алгоритм не принимает N
в качестве входных данных; входные данные выглядят как массив f
. Есть еще одна переменная с именем k
, которую ваш код не объявляет, но я предполагаю, что это недосмотр, и вы намеревались инициализировать, например, k = 0
перед первым l oop, так что k
не является входом для алгоритм.
Внешний l oop выполняется 10 раз, а внутренний l oop запускается f[i]
раз для каждого i
. Поэтому общее число итераций внутреннего l oop равно сумме чисел в массиве f
. Таким образом, сложность может быть записана как O(sum(f))
или O(Σf)
, где Σ
является математическим символом для суммирования.
Поскольку вы определили, что N
является целым числом, которое f
считает цифры, фактически можно доказать, что O(Σf)
- это то же самое, что и O(log N)
, при условии, что N
должно быть положительным целым числом. Это потому, что Σf
равно количеству цифр, которое имеет N
, что приблизительно равно (log N) / (log 10)
. Итак, по вашему определению N
, вы правы.
Я предполагаю, что ваш учитель не согласен с вами, потому что они думают, что N
означает что-то еще. Если ваш учитель определяет N = Σf
, то сложность будет O(N)
. Или, возможно, ваш учитель допустил настоящую ошибку; это не невозможно. Но первое, что нужно сделать, это убедиться, что вы согласны со значением N
.