1
我有这2个代码,问题是要找出每次x = x + 1将运行多少次,因为T1(n)代表代码1和T2(n)代表代码2.然后我必须找到每一个的BIG O,但我知道该怎么做,事情是我被困在找到多少次(当然n)x = x + 1会跑。嵌套循环,多少次运行和复杂性
CODE 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实际上你可以对'O(n sqrt(n)k)'代替,它与上面相同,但是是一个简化版本。使用哪个是一种偏好。 – svs