Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
For loop 正确的时间复杂度_For Loop_Time Complexity_Big O_Complexity Theory - Fatal编程技术网

For loop 正确的时间复杂度

For loop 正确的时间复杂度,for-loop,time-complexity,big-o,complexity-theory,For Loop,Time Complexity,Big O,Complexity Theory,我遇到了这个问题,它要求找出时间的复杂性 int count = 0; for (int i = N; i > 0; i /= 2) { for (int j = 0; j < i; j++) { count += 1; } } int count=0; 对于(int i=N;i>0;i/=2){ 对于(int j=0;j

我遇到了这个问题,它要求找出时间的复杂性

int count = 0;
        for (int i = N; i > 0; i /= 2) {
            for (int j = 0; j < i; j++) {
                count += 1;
            }
        }
int count=0;
对于(int i=N;i>0;i/=2){
对于(int j=0;j
它说它的时间复杂度是
O(n)
,应该是
O(nlogn)
,因为第一个循环是
logn
,第二个循环是
n

它说它的时间复杂度是O(n),应该是O(nlogn)吗 第一个循环是logn,第二个是n

内环是基于外环的。所以,你的要求是无效的

并且,+=(加法赋值运算符)的复杂度为O(1)

对于外部循环的第一次迭代,内部循环将执行N次

对于外部循环的第二次迭代,内部循环将执行N/2次

等等

因此,总的执行步骤

       = N + N/2 + ... + 1  
//对数N乘以几何级数

       ~ N / (1-(1/2)) (Infinite GP Summation Formula) //though the series would go up to 1
       ~ 2N.
       // ~ means approximately.
因此,代码的时间复杂度为O(N)


因此,给出的答案是正确的。

您的问题是在1/2天前提出的。您也可以在那里查看。在本例中,与您的用户名相符:)