我在将代码片段转换为计算T(n)的方程时遇到了问题,下面是一个示例代码片段:
a = b + c; d = a + e;
这个特定的问题要求确定T(n)。我应该如何去做呢?另一个示例代码如下所示:
sum = 0;
for (i=0; i<3; i++)
for (j=0; j<n; j++)
sum++;
我已经尝试按照其他类似问题的说明和例子来做了,但我还是被这个方程是如何精确求解的卡住了,下面是我目前所知道的一个例子和结果:
代码:
sum = 0;
i = 1;
while (i <= N)
{
sum = sum + 1;
i++;
}
结果是这样的:T(N)= 2+(Σ,N在上,i +1在下)* 2,最后简化为2 + 2N,我不确定这个结果是怎么得到的。
1条答案
按热度按时间nzk0hqpo1#
下面是解决这个问题的方法:
然后你可以写
T(n)=1+3*(1+n+2n)≈1+3n
,这意味着这个代码的时间复杂度是O(n)。一般来说,当你看到一个简单的
for
循环时,你可以通过条件语句来判断它的复杂度,对于j<n
,复杂度是O(n),对于i<3
,复杂度是O(3)。