Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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_Asymptotic Complexity - Fatal编程技术网

Algorithm 如何计算三个嵌套依赖循环的时间复杂度?

Algorithm 如何计算三个嵌套依赖循环的时间复杂度?,algorithm,time-complexity,asymptotic-complexity,Algorithm,Time Complexity,Asymptotic Complexity,以代码为例: void foo(int n){ int s = 0; for (i=1; i<=n; i++) for(j=1;j<=i*i;j++) if (j % i == 0){ for (k=1; k<=j; k++) s++; } } void foo(int n){ int s=0; 对于(i=1;i这条线: 如果

以代码为例:

void foo(int n){
    int s = 0;
    for (i=1; i<=n; i++)
        for(j=1;j<=i*i;j++)
            if (j % i == 0){
                for (k=1; k<=j; k++)
                    s++;
            }
}
void foo(int n){
int s=0;
对于(i=1;i这条线:
如果(j%i==0)
他正在发挥作用。
对于例如,对于i=3,j将运行9次


和(j%i==0)将仅为真3次。因此,k循环将不会运行9次,而只运行3次。

每当
j
i
的倍数时,将执行最里面的循环。 在这个循环中,
j
将是
i
i
的倍数

现在我们考虑每一个<代码> i>代码>迭代。只有<代码> I-1 < /代码>时间,我们将执行<代码>,如果只检查。然后休息时间,我们将运行内环:<代码> ij>代码>倍(我们也做了循环检查)。

i
迭代的工作将是
i+ij
j
不同于
1..i
,因此结果将是
i^2+(i^2*(i+1)/2)


现在如果我们考虑外部循环,它将是<代码> i=1…n /代码>代码>求和(i ^ 2 +(i ^ 2 *(i+1)/2))~O(n^ 4)< /代码>。< /p>您忘记了if语句。最内环不会为每个j运行,而是只有每n^ 2 /n=n时间。