java - 以下程序的时间复杂度是多少?

标签 java time-complexity

如何计算以下程序的时间复杂度?

int[] vars = { 2, 4, 5, 6 };
int len = vars.length;
int[] result = new int[len];

for (int i = 0; i < len; i++) {
    int value = 1;

    for (int k = 0; k < i; k++) {
        value = value * vars[k];
    }
    for (int j = i + 1; j < len; j++) {
        value = value * vars[j];
    }

    result[i] = value;
}

上面的和下面的有什么区别?

for (int i = 0; i < len; i++) {
    int value = 1;

    for (int j = 0; j < len; j++) {
        if(j != i) {
            value = value * vars[j];
        }
    }

    result[i] = value;
}

最佳答案

i for 循环的时间复杂度为 O(n),因为它对数组的每个元素执行一次迭代。对于数组中的每个元素,您将再次遍历它 -- 平均一半在 k for 循环中,平均一半在 j for 循环。其中每一个也是 O(n)。如果数组中有4个元素,操作次数与n*(n - 1)成正比,但在时间复杂度上,1等常量被忽略。

您的方法将执行的操作数与其中的元素数乘以自身成正比,因此,总体而言,该方法的复杂度为 O(n2)。

关于java - 以下程序的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468027/

相关文章:

java - HttpUrlConnection "PUT"请求还发送 "GET"请求

Java SimpleDateFormat.format(date) 配置

Java:来自其他类的 boolean 值未更改值/if 语句不起作用

c - 使用 BST 对结构数组进行排序的函数的时间复杂度是多少?

loops - 为什么是 O(log(logn)) 而不是 O(logn)

algorithm - 大O : How to determine runtime for a for loop incrementation based on outer for loop?

java - 无法加载库 :/tmp/BridJExtractedLibraries978435834650156898/OpenIMAJGrabber. 所以

java - 数据库只显示零 0

algorithm - 以下表达式的时间复杂度是多少?

algorithm - 确定这些不同循环的大 O 运行时间?