arrays - 当i为外循环且内循环以j=i+1开始时双循环的时间复杂度

标签 arrays loops time double complexity-theory

我试图更清楚地了解我在下面编写的算法的复杂性:

left = 1
right = 1

for i=0; i < array.len; i ++:
        j = i+1
        for j; j < array.len; j++:
             right *= array[j]
        tmp[i] = array[idx]
        left *= array[idx]
        right = 1
return tmp

如果我们将数组大小定义为n,则外层循环的复杂度为O(n),但内层循环并不是一直迭代n-1次,只有在i=0时才迭代第一次。

那么,复杂度是多少? 外循环为 O(n), 内循环的 O(n-j) ? 那么,也许 O(n(n-j)) ?最终结果是 O(n^2)?

请帮忙。

最佳答案

是的,O(n^2) 是时间复杂度。第一个循环运行 n 次。对于第一个循环的每次迭代,第二个循环运行 n 次。 n * n = n^2

关于arrays - 当i为外循环且内循环以j=i+1开始时双循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52508574/

相关文章:

javascript - 图像类别根据一天中的时间而变化

java - 计算每分钟在java中出现的次数

java - 对对象的字段进行快速排序

java - 使用方法删除重复项

javascript - JS 函数在控制台中给我未定义的信息,但我期待一个数字

c - 在 C 中声明和初始化未知大小的二维数组

c++ - 下面的c++程序有没有代码优化方法

c - 在 C 编程中动态填充数组

PHP 打破 2 个循环

windows - time .bat 文件运行时间