У меня есть общая функция
for i from 1 to n; i = 2i; {
for j from 1 to i; {
(constant time stuff)
}
}
Для этой функции первая строка for i from 1 to n; i = 2i;
, которую я знаю, это O (log (n)). Строка (constant time stuff)
не имеет значения, так кого это волнует, так как это O (1).
Но средняя линия for j from 1 to i;
- вот где у меня проблемы.
Я предполагаю, что Big O этой строки совпадает с первой, поскольку она следует тому же шаблону, что и первая, где i удваивается после каждой итерации, что делает его O (log (n)) , но это также может быть O (n)?
Кроме того, если это действительно O (log (n)) * O (log (n)), это просто O (log (n) ^ 2) правильно?
Извините, я только начал эту игру Big O, и, к сожалению, до сих пор мне приходилось полагаться на Интернет, так как мой учитель не очень хорош: (