【发布时间】:2021-07-20 00:34:56
【问题描述】:
我正在尝试确定比较的总数(不计算循环的停止条件)以及复杂性如何随 N 增长。
1.
for (int ind = 0; ind < N; ind++)
{
if (arr[ind] < 0)
arr[ind] = arr[ind] * 2;
}
2.
bool there_are_duplicates = false;
for (int ind1 = 0; ind1 < N; ind1++)
{
for (int ind2 = 0; ind2 < N; ind2++)
if (ind1 != ind2 && arr[ind1] == arr[ind2])
there_are_duplicates = true;
}
3.
for (int ind = 0; ind < N; ind++)
{
int sum = 0;
int nb = 0;
for (int n = 0; n < 4; n++)
{
if (ind >= n)
{
sum = sum + arr[ind - n];
nb++;
}
}
arr[ind] = sum / nb;
}
对于第一个,复杂度为 N,比较次数也为 N 或刚好等于一?
对于第二个,复杂度为 N^2,比较次数为 2(N^2) 还是刚好等于 2?
对于第二个,复杂度为 N,比较次数也为 4N 还是刚好等于 1 或 4?
【问题讨论】:
标签: arrays c algorithm time-complexity