必须确定以下代码的运行时间。 对于以下程序片段,请给出运行时间的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)
答案 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),这是您整体函数的复杂性。