内环与n / 2外环的算法分析关系

时间:2016-09-11 19:29:26

标签: java algorithm computer-science

我无法弄清楚此代码的时间复杂性:

public static void myfun1 (int n) {
    System.out.println("n = " + n);
    for (int k = 1; k <= n / 2; k++){
        System.out.println(k);
        for(int m = 1; m <= k; m++){
            System.out.println(k + ", " + m);
        }
    }
 }
public static void main(String[] args){
    myfun1(8);
}

当我为n = 8运行它时,输出如下:

Output

我认为第一个循环将运行(n / 2)并且我必须将它乘以内循环。我遇到麻烦的是内循环。通常我会假设两个嵌套循环是(n ^ 2)但我觉得第一个循环中的n / 2是正确的但我不确定内循环是如何与它相关的。我看到从每个k的输出中有m个循环完成我的m。出于某种原因,我的大脑无法用n来翻译这种关系。有人可以给我一些指导吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的内循环第一次运行1次 第二次2次......最多n/2

因此它的运行方式类似于从1到n/2 = ((n/2+1)*n)/4的整数之和

(8,它运行10次,添加一个计数器以确保)

因此,复杂性是O(n ** 2)。