Java 你能帮我计算一下这个算法的时间复杂度吗?

Java 你能帮我计算一下这个算法的时间复杂度吗?,java,algorithm,big-o,time-complexity,complexity-theory,Java,Algorithm,Big O,Time Complexity,Complexity Theory,有人能给我写信答复吗 例如,我知道for循环中的操作数是2N+2 以及count++中的操作数;是N吗 但是对于其他部分,时间复杂度是O2n。瓶颈是: public static void complexityexample(int n) { int count = 0; int k = 1; for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { coun

有人能给我写信答复吗

例如,我知道for循环中的操作数是2N+2

以及count++中的操作数;是N吗

但是对于其他部分,时间复杂度是O2n。瓶颈是:

public static void complexityexample(int n) {
    int count = 0;
    int k = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            count++;
        }
        k *= 2;
        for (int t = 0; t < n; t++) {
            count++;
        }
        System.out.println(count);
    }
}
最后的平等从何而来

请注意,下一个内部循环:

20 + 21 + 22 + ... + 2n-1 = 2n - 1 在渐近表示法方面不影响时间复杂度,因为它为i的每次迭代增加了时间,并且这很快被第一个内循环的指数行为所抑制

如果你想在最后计算count的值,它是第一个内循环的总和,如前所述是2n-1,第二个内循环是sum{n | for each i}=n2。

时间复杂度是O2n。瓶颈是:

public static void complexityexample(int n) {
    int count = 0;
    int k = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            count++;
        }
        k *= 2;
        for (int t = 0; t < n; t++) {
            count++;
        }
        System.out.println(count);
    }
}
最后的平等从何而来

请注意,下一个内部循环:

20 + 21 + 22 + ... + 2n-1 = 2n - 1 在渐近表示法方面不影响时间复杂度,因为它为i的每次迭代增加了时间,并且这很快被第一个内循环的指数行为所抑制

如果你想在最后计算count的值,它是第一个内循环的总和,如前所述是2n-1,第二个内循环是sum{n | for each i}=n2。

2^n+n*n

因为他们的主回路是

for (int t = 0; t < n; t++) {
2^n来自:

for (int i = 0; i < n; i++) {
n*n来自:

for (int j = 0; j < k; j++) {
        count++;
    }
2^n+n*n

因为他们的主回路是

for (int t = 0; t < n; t++) {
2^n来自:

for (int i = 0; i < n; i++) {
n*n来自:

for (int j = 0; j < k; j++) {
        count++;
    }
第一排1操作

2st第2行操作

第三排1+n+1+n=2N+2

4 2N+2

5N

7 N

92N+2

10N

131

是这样吗

经过所有的数学计算,最终结果是:14N^2+22N+11-运算。

1行运算

2st第2行操作

第三排1+n+1+n=2N+2

4 2N+2

5N

7 N

92N+2

10N

131

是这样吗


经过所有的数学计算,最终结果是:14N^2+22N+11-运算。

使用西格玛符号的精确方法是:

经经验验证:

当n=10时,总迭代次数为1123

当n=25时,总迭代次数为33555056

当n=50时,我需要永远执行,我必须将变量类型从int改为long


实际上,这种非多项式算法非常昂贵。

使用西格玛表示法的精确方法是:

经经验验证:

当n=10时,总迭代次数为1123

当n=25时,总迭代次数为33555056

当n=50时,我需要永远执行,我必须将变量类型从int改为long


事实上,这种非多项式算法非常昂贵。

forint t=0;这是一个错误,有forint t=0;t由于你有一个无限循环,我认为时间复杂性的问题是没有意义的。我已经格式化了你的代码,但是你有大量缺少的括号。这是你想要的吗?今后,请确保您的代码经过编译且清晰易读。@qcGold想添加一条评论:此网站应帮助您解决算法复杂性问题,在学校时确实帮助了我:forint t=0;这是一个错误,有forint t=0;t由于你有一个无限循环,我认为时间复杂性的问题是没有意义的。我已经格式化了你的代码,但是你有大量缺少的括号。这是你想要的吗?将来,请确保您的代码经过编译且清晰可读。@qcGold想添加一条评论:该网站应该帮助您解决算法复杂性问题,当然在学校时也帮助了我:这个答案是错误的,复杂性是n的指数大小,因为第一个内部循环-从0到k循环,对于i,k呈指数增长。这个答案是错误的,由于第一个内环从0循环到k,复杂度在n的大小上呈指数增长,而对于i,k呈指数增长。