For loop 嵌套for循环的运行时 (i=1;i
我的解决方案尝试: j迭代到i*i=n^4。对于“k”循环,我们有从1到n^4的k之和,即n^4(n^4-1)/2。所以运行时是O(n^8)。这让我觉得太高了,但我看不出有错误 所以:For loop 嵌套for循环的运行时 (i=1;i,for-loop,runtime,For Loop,Runtime,我的解决方案尝试: j迭代到i*i=n^4。对于“k”循环,我们有从1到n^4的k之和,即n^4(n^4-1)/2。所以运行时是O(n^8)。这让我觉得太高了,但我看不出有错误 所以: for(i = 1; i < n*n; i++){ for(j = 1; j < i*i; j++){ if(j % i == 0){ for(k=0; k < j; k++){ count++;
for(i = 1; i < n*n; i++){
for(j = 1; j < i*i; j++){
if(j % i == 0){
for(k=0; k < j; k++){
count++;
}
}
}
}
但最内部的循环只有在我除以j时才运行。在1和i*i之间正好有i个数,可以被i整除。因此,最内部的循环将为从1到n*n的每个i运行i次
到目前为止,这是n^4
但是现在j最多可以是i*i,所以最多可以是n^4
是的,复杂度是O(n^8)。外部循环执行n2次。下一个循环总共执行∑i=1n2 i2,即O(n6)
只有当j
是i
的倍数时,最里面的循环才会运行,对于i
的每个值,都会发生i
次。对于j
的每个这样的值,i
,2i
,3i
,最里面的循环执行j
次,依此类推,直到i*i
。因此,执行最内部的循环∑对于每个i
,j=1i ij次,即O(i3)
因此,总运行时间为∑i=1n2 O(i3)+O(n6),这是O(n8),因为∑i=1n2 O(i3)=O(n8)
(请注意,我假设第二个循环的增量是
j++
,而不是I++
。如果是I++
,答案就大不相同了。)第二个循环的增量是I++
或j++
?是的,第二个循环的增量是j++,我编辑了原始帖子
i goes from 1 to n*n.
j goes from 1 to i*i