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:这不是更好的问题,上限当然不是。“内环”。