Algorithm 为什么这个问题的时间复杂度很大是C?

Algorithm 为什么这个问题的时间复杂度很大是C?,algorithm,time-complexity,big-o,Algorithm,Time Complexity,Big O,我的计算是: statement | time ------------------------|-------- var value = 0; | 1 for(var i=0;i<n;i++) | 1 + (n+1) + n for(var j=0;j<i;j++); | n + n*(n(n+1)/2 +1) + n* n(n+1)/2 value += 1; | n*(n(n+1)/2 语句

我的计算是:

 statement              | time 
------------------------|--------
var value = 0;          | 1
for(var i=0;i<n;i++)    | 1 + (n+1) + n 
for(var j=0;j<i;j++);   | n + n*(n(n+1)/2 +1) + n* n(n+1)/2
value += 1;             | n*(n(n+1)/2 
语句|时间
------------------------|--------
var值=0;|1.

对于(var i=0;i,让我们进行最初的几次迭代计数并查看

i (counter)           j (# of iterations for each value of i)
0th                   0
1st                   1
2nd                   2
.                     .
.                     .
(n-1)th               n-1
现在,前N个整数的和被定义为
N(N+1)/2
,其中范围从
1
开始,一直到
N
。更多详细信息

在我们的例子中,范围从
0
开始,一直到
n-1
(上表中的RHS)。在求和公式中将
n
替换为
n-1
,得到
n(n-1)/2

最大的O复杂度是O(n*n),因此n平方

操作数为n(n-1)/2


大O复杂度忽略了常数和低阶项。

这个问题表述得很糟糕,因此没有精确的答案。事实上,作者没有说哪个操作“计数”。例如,当i=0时,内部循环执行一次(至少初始化和测试),而其主体不执行


现在,如果我们只计算值的递增次数,最里面的循环正好执行其中的i,而最外面的循环使i从0变为n-1。因此,总的Tn-1=n(n-1)/2(三角形数).

是第二个循环后的分号有意地放在图像中,所以可能不是
j
从0运行到
i-1
。这使得
i
迭代。因此,总迭代次数是
0+1+2+…+(n-1)=n(n-1)/2
是关于被评估语句总数的问题(包括循环中的比较和增量),或者执行
值+=1
行的频率(因此
值的最终值是多少)“罗纳德,你的评论是答案。请考虑通过扩大主题和使用技术答案将它转换成答案。可以找到关于FuMula的详细解释。我认为这意味着上限时间复杂度,这是内循环。@ NigHalasc:这不是更好的问题,上限当然不是。“内环”。