【发布时间】:2021-10-23 00:24:45
【问题描述】:
我认为这段代码的时间复杂度是 O(n^2),但我不确定,所以如果有人能解释这段代码的时间复杂度是多少,那真的很有帮助
int func2()
{
int i, j, k = 0;
scanf("%d", &n);
for (i = 1; i < n; i++)
{
i -= 1;
i *= 2;
k = k + i;
for (j = 1; j < n; j++);
}
}
【问题讨论】:
-
n>1 的任何值都不会终止代码。
-
代码有很多问题,很难回答你的问题。通常,渐近复杂度也与语言无关,因此使用伪代码中的算法描述将是比有缺陷的 C 代码更好的方法。作为这里的新用户,也请带上tour并阅读How to Ask。
-
呃,我昨天在测验中得到了这个问题,由于代码,我非常困惑,我之前说过,但看起来所有的 cmets 都因为某种原因消失了,我有一个非常糟糕的老师这样你就可以理解为什么这是一个超级有缺陷的 c 代码了。
-
如果您对代码感到困惑,您可以提出类似“在昨天的测验中,我被问到此代码的复杂性,但我无法理解(您可以'不明白)。这段代码在哪些方面是错误的,我的理解在哪些方面是错误的”。您问了一个与您的实际问题不同的问题,因此没有得到最有用的回答。 (请注意,此类问题及其产生的答案可用于向您的老师提供有关他的测验问题的出色反馈)。
-
好的,我以后会记住这一点
标签: c algorithm time-complexity big-o