Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops 查找嵌套for循环的时间复杂性有困难_Loops_Nested_Big O_Complexity Theory - Fatal编程技术网

Loops 查找嵌套for循环的时间复杂性有困难

Loops 查找嵌套for循环的时间复杂性有困难,loops,nested,big-o,complexity-theory,Loops,Nested,Big O,Complexity Theory,因此,我一直在尝试使用以下算法来寻找更大的Oh复杂性: for (i = 1; i ≤ n;i + +) for (j = 0; j < n; j = j + i) print(Array[j]); (i=1;i)的≤ n、 (i++) 对于(j=0;j

因此,我一直在尝试使用以下算法来寻找更大的Oh复杂性:

for (i = 1; i ≤ n;i + +)
     for (j = 0; j < n; j = j + i)
          print(Array[j]);
(i=1;i)的
≤ n、 (i++)
对于(j=0;j

有人告诉我,最好的方法是用求和来表示,我知道它可以用某种形式的级数来表示,我真的不知道从哪里开始。我可以看到外部循环迭代了n次,但是内部循环让我感到不安。我希望我能在这里得到一个正确的方向,而不是答案

如果展开两个for循环中的求和数。数组索引应如下所示

(0,1,2,…n-1),(0,2,4,…n-1),(0,3,6,9…n-1)…(0,n/2),(0)

如果我们观察到第一个括号有n,第二个括号在最坏情况下有n/2,依此类推,直到最后一个括号有1
所以总和的总数可以写成

总和=总和(从i=1到n)[n/i]


尝试求解求和,您将得到求和的总数

让我们按照您的建议使用求和,以获得更具分析性/代数性的方法

<>首先考虑:

for (i = 1; i <= n; i++)
    //some O(1) operation
for (j = 0; j < n; j = j + k)
    //some O(1) operation

其中k是一个常数正整数项(如1、2、3……等),并且
k您可能希望再次检查该项。似乎j的循环边界不依赖于i的循环边界。所以,这应该是:(0,1,2,…n-1),(0,1,2,…n-1)。。。(0,1,2,…n-1)重复n次。我认为我的求和是正确的,因为内循环的增量为j=j+I。如果j=j+1I得到纠正,你提到的情况就会是这样。我在内环中将I误读为1。内环可以重写。看看我的答案。
for (j = 0; j < n; j = j + k)
for (j = 0; j < n/k-1; j++) 
for (i = 1; i <= n; i++)
     for (j = 0; j < n; j = j + i)
          //some O(1) operation
for (i = 1; i <= n; i++)
     for (j = 0; j < n/k-1; j++)
          //some O(1) operation
Sum[Sum[1, {j, 0, (n/i)-1}], {i, 1, n}]=Sum[n/x, {x, 1, n}]=n*Sum[1/x, {x, 1, n}]=n*(1+1/2+1/3+...+1/n)=n*HarmonicNumber[n]