У меня есть эти 2 кода, вопрос заключается в том, чтобы определить, сколько раз x = x + 1 будет запускаться каждый раз, поскольку T1 (n) обозначает код 1 и T2 (n) означает код 2. Затем я должен найти БОЛЬШОЙ O каждого из них, но я знаю, как это сделать, дело в том, что я застрял в поиске того, сколько раз (что касается n, конечно) будет x = x + 1 будет запустить.Вложенные циклы, сколько раз запускать и сложность
КОД 1:
for(i= 1; i <= n; i++)
{
for(j = 1; j <= sqrt(i); j++)
{
for(k = 1; k <= n - j + 1; k++)
{
x = x + 1;
}
}
}
КОД 2:
for(j = 1; j <= n; j++)
{
h = n;
while(h > 0)
{
for (i = 1; i <= sqrt(n); i++)
{
x = x+1;
}
h = h/2;
}
}
Я действительно застрял, и прочитал уже много, так что я спросить, если кто-то может помочь мне, пожалуйста, объясните мне аналитически.
PS: Я думаю, что в коде 2 этот for (i = 1; i <= sqrt(n); i++)
будет работать n * log (n) раз, правильно? И что?
Я забыл сказать, что в коде 2 n = 2^k, где k - целое число. Если это не то же самое. – PavTze
@PavTze не имеет значения, результат тот же – svs
@PavTze acutally вы могли бы править 'O (n sqrt (n) k)' вместо этого, что и выше, но упрощенная версия. Это предпочтительнее. – svs