Мне нужно проанализировать этот цикл, среди прочих, и определить его время работы с использованием нотации Big-O.Анализ Big-O для цикла
for (int i = 0; i < n; i += 4)
for (int j = 0; j < n; j++)
for (int k = 1; k < j*j; k *= 2)`
Вот что я до сих пор:
for (int i = 0; i < n; i += 4) = n
for (int j = 0; j < n; j++) = n
for (int k = 1; k < j*j; k *= 2) = log^2 n
Теперь проблема я иду окончательное время работы цикла. Мое лучшее предположение - O (n^2), однако я не уверен, что это правильно. Может ли кто-нибудь помочь?
Редактировать: извините за О -> O вещь. Мой учебник использует «Big-OH»
Поскольку вы выполняете все внутренние циклы для каждой итерации внешних петель, это будет простое умножение, то есть O (n * n * log (n)). (Однако не проверяйте свои индивидуальные результаты). – Thomas
Я думаю, что третий цикл не является «log^2 n', а скорее« log n^2 », который является« O (log n) ». –
@Thomas, чтобы вы все равно размножались как обычно, хотя есть функция журнала? JuanLopes вы правы! Благодарю. –