这个算法有多复杂
How complex is this algorithm
我真的很难理解大学的算法复杂性分析。我的教授给了我们一些简单的代码来计算复杂性,这就是其中之一:
double minValue(double* pd, int& p, int N)
{
double minV = pd[0];
for (int i=1; i < N; i++)
if (minV > pd[i]) {
minV = pd[i];
p = i;
}
return minV;
}
有人能告诉我这有多复杂吗?我的猜测是 O(N²)
此函数唯一重复的部分是以下 for
循环:
for (int i+1; i < N; i++)
这个循环就是O(N)
,所以这也是函数的整体复杂度。
由于函数的输入是一个数组、一个标量和一个标量,因此数组会影响您的时间复杂度。您只需要在 for 循环中遍历一次数组即可。增加输入的大小会线性增加 for 循环的时间,因为它将通过每个值一次。因此时间复杂度为 O(N).
我真的很难理解大学的算法复杂性分析。我的教授给了我们一些简单的代码来计算复杂性,这就是其中之一:
double minValue(double* pd, int& p, int N)
{
double minV = pd[0];
for (int i=1; i < N; i++)
if (minV > pd[i]) {
minV = pd[i];
p = i;
}
return minV;
}
有人能告诉我这有多复杂吗?我的猜测是 O(N²)
此函数唯一重复的部分是以下 for
循环:
for (int i+1; i < N; i++)
这个循环就是O(N)
,所以这也是函数的整体复杂度。
由于函数的输入是一个数组、一个标量和一个标量,因此数组会影响您的时间复杂度。您只需要在 for 循环中遍历一次数组即可。增加输入的大小会线性增加 for 循环的时间,因为它将通过每个值一次。因此时间复杂度为 O(N).