Я собираюсь дать вам математическое объяснение того, почему дополнительные итерации и операции с постоянным временем не имеют значения.
Это O (n), поскольку определение Big-Oh таково для f(n) ∈ O (g (n)) существует некоторая постоянная k такая, что f (n)
Рассмотрим алгоритм со временем выполнения, представленным как f (n) = 10000n + 15000000. Можно упростить это, выделив n: f (n) = n (10000 + 15000000 / n).Для наихудшего случая времени выполнения вам важна производительность алгоритма только для очень больших значений n.Поскольку в этом упрощении вы делите на n, во второй части, когда n становится действительно большим, коэффициент n будет приближаться к 10000, так как 15000000 / n приближается к 0, если n огромно.Следовательно, для n> N (это означает, что для достаточно большого значения n) должна существовать постоянная k, такая что f (n)
С учетом вышесказанного это означает, что вам не нужно беспокоиться о постоянных различиях времени выполнения, даже если вы выполняете цикл n + 1 раз.Единственная часть, которая имеет значение (для полиномиального времени) - это наивысшая степень n в вашем коде.Ваши обратные алгоритмы имеют O (n) время выполнения, и даже если вы повторяли n + 1000 раз, это все равно будет O (n) время выполнения.