【发布时间】:2015-05-07 12:15:57
【问题描述】:
遍历(行、列)一个二维数组的时间复杂度是多少?
bool check(int array [9][9])
{
int num=0;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (array [i][j] == 0) {
num++;
}
}
}
return num;
}
我认为loop 的每个都将取n 的平方根,因此嵌套循环完全将O(n) 用作遍历所有元素,其中我将n 定义为输入的总大小(在这种情况下array 中的 81 个元素)。对吗?
【问题讨论】:
-
你的情况是什么
n?代码显示大小数组9。实际上,如果您使用 NxN 数组,则复杂度为 O(N**2)。并且,请格式化您的代码 -
好吧,如果
n == N*N其中N 是每个数组 的大小以及数组的数量,那么O(N**2) == O(n);但是,恕我直言,它定义的参数n(n == N*N) 很奇怪。 -
“复杂性”仅向您显示与输入大小增长速度相比,您的工作增长速度有多快。这意味着它看起来会有所不同,具体取决于您将其作为输入大小 - 例如,数组中的元素数或行/列数。就像以米或英尺为单位测量一件事会给出“不同”的结果。
-
@Ahmed 不要将您的问题更改为不同的问题。如果您有新问题,请提出新问题。
-
@AhmedIsmail 首先缩进所有行并计算大括号。据我所知,您的代码是错误的。
标签: c++ arrays algorithm for-loop time-complexity