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

标签 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 完成了 k 次循环。出于某种原因,我的大脑无法根据 n 来翻译这种关系。有人可以给我一些指导吗? 提前致谢。

最佳答案

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

所以它的运行方式类似于从 1 到 n/2 = ((n/2+1)*n)/4

的整数之和

(对于8,运行10次,加个计数器确定)

所以这里的复杂度是 O(n**2)。

关于java - 内循环与n/2外循环的算法分析关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439869/

相关文章:

javascript - 如何动态更改此随机数生成器的曲线?

c# - Theorycrafting a program to create mnemonic major trigger words 需要一些建议

java - 如何在棋盘游戏中使用循环编写更短的代码

python-3.x - 冒泡排序大大优于选择排序

java - Checkstyle - 方法按修饰符排序

Java Socket 不允许显示 Swing 框架

swift - Swift 中常见的父 View

.net - .NET 的正则表达式图灵完整吗?

java - 将 JNI 模块放在 Linux 或 OS X 中的什么地方

java - Spring 5 至少必须存在一个 JPA 元模型