Arrays 二维阵列的算法复杂度
假设我有一个由n*M个元素组成的数组M,所以如果我想打印它的元素,我可以执行如下操作:Arrays 二维阵列的算法复杂度,arrays,algorithm,big-o,time-complexity,Arrays,Algorithm,Big O,Time Complexity,假设我有一个由n*M个元素组成的数组M,所以如果我想打印它的元素,我可以执行如下操作: for i=1 to m for j=1 to n print m[i,j] next j next i 我知道打印指令是在固定时间内完成的,因此在这种情况下,我的算法复杂度为: \sum{i=1}^{m}\sum{j=1}^{n}c=m.n.c 我想是O(n)的顺序 但是,如果数组的行数和列数相同,会发生什么情况呢?我想复杂性是: \sum{i=1}^{n}\sum{j=1}
for i=1 to m
for j=1 to n
print m[i,j]
next j
next i
我知道打印指令是在固定时间内完成的,因此在这种情况下,我的算法复杂度为:
\sum{i=1}^{m}\sum{j=1}^{n}c=m.n.c
我想是O(n)的顺序
但是,如果数组的行数和列数相同,会发生什么情况呢?我想复杂性是:
\sum{i=1}^{n}\sum{j=1}^{n}c=n.n.c
所以它的阶数是O(n^{2})
我的假设正确吗?我假设m和n是变量而不是常数。在这种情况下,算法的运行时间应该是O(mn),而不是O(n),因为运行时间与数组中的元素数成正比。您通过求和得出了这个结果,但通过查看每个数组元素完成了多少工作可能更容易看出。考虑到这一点,如果m=n,则运行时是n的二次方
希望这有帮助 我假设m和n是变量而不是常数。在这种情况下,算法的运行时间应该是O(mn),而不是O(n),因为运行时间与数组中的元素数成正比。您通过求和得出了这个结果,但通过查看每个数组元素完成了多少工作可能更容易看出。考虑到这一点,如果m=n,则运行时是n的二次方 希望这有帮助 我想第一个应该是O(m*n)。可以用来表示算法复杂性的变量数量没有实际限制;我觉得第一个应该是O(m*n)。可以用来表示算法复杂性的变量数量没有实际限制;它只是不像单独使用“n”那么常见。