*帮助*确定程序的运行时间

时间:2019-06-21 07:28:28

标签: runtime time-complexity big-o

必须确定以下代码的运行时间。 对于以下程序片段,请给出运行时间的Big-O分析。

我尝试将数字添加到变量中,以查看变量需要多长时间以及如何简化。在i * i部分遇到困难。我知道第二个循环将运行O(n)次,但是很难理解第二个循环。我知道它将遍历(i ^ 2)时间,给它一个(i ^ 2)运行时间,但是这样做会使整个程序的运行时间为n +(n ^ 2)还是由于简化而导致,我只保留了高阶(n ^ 2)的个数,或者我完全错了,需要对e进行不同的处理。我相信t,if语句和t ++的减速度为O(1)并且可以忽略。

总而言之,我认为i在如何处理它们以及应如何在整体运行时处理(i ^ 2)方面使我感到困惑。由于我知道嵌入式for循环的典型时间为O(n ^ 2)。

int t = 0;                       //O(1)
for(int i=1; i <= n; i++)        //O(n)
   for(int j=1; j <= i*i; j++)   //O(i^2) 
      if(j % i == 0)             //O(1)
          t++;                   //O(1)

1 个答案:

答案 0 :(得分:0)

您正确的是,典型的嵌套for循环的时间为@ContentChildren。他们可能看起来像这样

QueryList<T>

还是一些变化。

由于我们要嵌套它们,所以我们将它们的复杂度乘以。 O(N)* O(N)= O(N ^ 2)。

您的函数有些不同,因为您正确识别了内部循环为O(N ^ 2),因为我们对n的值进行平方,然后进行多次迭代,而外部循环为标准O(N )循环。

O(N)* O(N ^ 2)= O(N ^ 3),这是您整体函数的复杂性。