如何发现时间复杂性和大O



对于以下代码片段,提供逐行分析并构造函数T(n(,该函数将此代码片段的运行时间作为"n"的函数。还要确定此代码段的big-O。

x = 10,000;
for (int i = 1; i <= n; i++) {
if ( x < i)
sum += foo( i );``
system.out.print(sum);
else
for (j = 1; j <= i; j++)
system.out.print( i );
system.out.println( );
}
foo (a) {
for (int i = 0; i < n; i++)
sum += a * i;
return sum;
}
x = 10,000; 

1:使该O(1(总共花费1个固定的任意长度的时间

for (int i = 1; i <= n; i++) {

2:运行n次,所以时间现在是O(n(,因为O(n

if ( x < i)
sum += foo( i );``
system.out.print(sum);

3:由于foo中的for循环,这些行在O(n(中运行,因此由于这是嵌套的,对于n>10000 ,这里的时间是O(n^2(

else
for (j = 1; j <= i; j++)
system.out.print( i );
system.out.println( );
}

4:这也将在循环中运行n次,因此O(n^2(表示时间<10000

foo (a) {
for (int i = 0; i < n; i++)
sum += a * i;
return sum;
}

5:见第三条评论

最终:由于这在O(n^2(中运行,对于n>1000和n<10000这个函数是O(n^2(

相关内容

  • 没有找到相关文章

最新更新