Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从循环和条件语句计算时间复杂度_Algorithm_Time Complexity - Fatal编程技术网

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);例如:排序算法正在应用于已排序的列表。请参阅以进一步阅读。