Algorithm 从循环和条件语句计算时间复杂度
我用每个循环的时间复杂度计算Algorithm 从循环和条件语句计算时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我用每个循环的时间复杂度计算O(n)。 每行代码的时间复杂度为: = 1 + n *((n * (1 + n * 1)) + (n * 1))) = 1 + n * (n * (n + 1) + n) = 1 + n * (n^2 + n + n) = 1 + n^3 + n^2 + n^2 = 1 + n^3 + 2 * n^2` 所以它是O(n^3) 我的计算正确吗 代码: int result = 0 ; //1 for (int i = 0 ; i <N
O(n)
。
每行代码的时间复杂度为:
= 1 + n *((n * (1 + n * 1)) + (n * 1)))
= 1 + n * (n * (n + 1) + n)
= 1 + n * (n^2 + n + n)
= 1 + n^3 + n^2 + n^2
= 1 + n^3 + 2 * n^2`
所以它是O(n^3)
我的计算正确吗
代码:
int result = 0 ; //1
for (int i = 0 ; i <N ; i++){ //n
for (int j = 0 ; j <N ; j++){ //n
for (int k = 0 ; k <N ; k++){ //n
int x = 0 ; //1
while (x < n ){ //n
result ++ ; //1
x+=3 ; //1
}
}
for(int k = 0 ; k<2*M ; K++){ //n
if(K%7 == 4)
result ++ ;
}
}
}
int结果=0//1.
对于(inti=0;i如果时间复杂度可以表示为a(n^3)+b(n^2)+c(n)+d,其中a、b、c和d为常数,则时间复杂度为O(n^3)
我想,你是对的。在快速浏览之后,我猜复杂性是O(N^4)。我将此定义为猜测,因为提供的代码有一些拼写错误,这可能会改变它的含义。我在下面提供了我的解释:
int result = 0 ;
for (int i = 0 ; i <N ; i++) { // N
for (int j = 0 ; j <N ; j++) { //N * N
for (int k = 0 ; k <N ; k++) { // N*N*N
int x = 0 ; //1
while (x < N ){ //This was x < n, but n was undefined, so assumed N. N^4
result ++;
x+=3;
}
}
for(int k = 0 ; k<2*N ; k++) { //N*N*(2*N), this was k<2*M, but M was undefined
if(k%7 == 4) result++;
}
}
}
int结果=0;
对于(int i=0;我是的,这个很棒的答案谢谢Alan,但是当大o是log n时,在我的问题中,如果for的第一行是这样的对于(int i=0;i>n;i++){//n}和n say=8,我的意思是没有达到循环的条件,所以大o将是o(1),对不起@YallaraceMohamed,我不太明白。o在哪里(logn)进入它?在本例中,不,不,我询问时间复杂度何时为n logn另一个问题如果第一个循环从第一个条件中断,那么时间复杂度T(n)将为1在您的代码中没有复杂度O(n.logn)的阶段的示例
。以二叉树排序算法为例。对于T(n)=1的状态,您讨论的是最坏和最佳情况的复杂性。这些通常适用于考虑输入的属性而不是其大小(n);例如:排序算法正在应用于已排序的列表。请参阅以进一步阅读。