In 这个答案 https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm#answer-22688792,它说:
如果算法的执行时间与输入大小成正比,即时间随着输入大小的增加而线性增长,则称该算法以线性时间运行。
我输入了一个3x3的数组,所以我需要输入9个数字,需要迭代9次。
我输入了一个4x4的数组,所以我需要输入16个数字,需要迭代16次。
........
迭代的执行与数字的数量(或大小)成正比。
所以我认为时间复杂度应该是O(n)
.
But 另一个答案 https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm#answer-33474486说:
O(n^c):嵌套循环的时间复杂度等于最内层语句的执行次数。例如,以下示例循环的时间复杂度为 O(n^2)
for (int i = 1; i <=n; i += c) {
for (int j = 1; j <=n; j += c) {
// some O(1) expressions
}
}
我觉得有点困惑。
所以我觉得这个问题也可以是:
是什么意思n
in array?(是指数组的大小还是数组的维数?)使用的时间复杂度是多少for
循环迭代二维数组。
是吗O(n)
or O(n^2)
?
如果时间复杂度是O(n^2)
因为它有两个for
循环。
我用它来创建一个 3x3 数组:
a[0,1,2] -> b[0,1,2] -> c[0,1,2]
所以我用它来迭代这个数组。它将是O(n)
,所以它会比使用更快for
循环迭代数组。为什么?
PS:我用谷歌翻译看到这些答案,所以也许我误解了。