Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
C++ 使用3个嵌套循环的以下代码的时间复杂性_C++_Algorithm_Time_Time Complexity - Fatal编程技术网

C++ 使用3个嵌套循环的以下代码的时间复杂性

C++ 使用3个嵌套循环的以下代码的时间复杂性,c++,algorithm,time,time-complexity,C++,Algorithm,Time,Time Complexity,有人能在下面解释一下这段代码的时间复杂度吗 int sum,i,j,k,n; sum = 0; cin>>n; int arr * = new int[n]; for (i=1;i<n;i=i*2){ cin>>arr[i]; for (j=0;j<n;++j) for (k=1;k<=n;k=k*2) sum+=arr[j]; } int和,i,j,k,n; 总和=0; cin>>n; int arr*

有人能在下面解释一下这段代码的时间复杂度吗

int sum,i,j,k,n;
sum = 0;
cin>>n;
int arr * = new int[n];
for (i=1;i<n;i=i*2){
   cin>>arr[i];
   for (j=0;j<n;++j)
       for (k=1;k<=n;k=k*2)
           sum+=arr[j];
}
int和,i,j,k,n;
总和=0;
cin>>n;
int arr*=新的int[n];
对于(i=1;i>arr[i];

for(j=0;jfor
三个
for循环的边界似乎没有任何相互依赖性。因此,我们应该能够通过将三个循环的复杂性相乘来计算出总体运行时间


i
k
中的循环是
O(lgN)
,因为它们在每次迭代时将循环计数器加倍。
j
中的中间循环是
O(N)
。这将产生
O(N*lgN*lgN)
作为整体复杂性。

不,不,不是。@Apoorvasahay我不同意,因为
I
k
循环在我看来是
O(lgN)
的。代码有未定义的行为。数组没有初始化,所以
arr[j]
访问未初始化的值。我想我明白了。谢谢