无法分析此函数的运行时

时间:2017-06-15 00:13:34

标签: algorithm runtime complexity-theory discrete-mathematics big-theta

Click here to check question image

您好,我有这个问题,但我错了,我只是不明白这一点。 它是关于获得这个嵌套循环的精确运行时。

具体来说,我可以理解,直到“for i = 2,内循环运行时:2n-2”。然而,在那之后,我无法理解。

问题1)

首先,它说For i=n, inner loop runtime is n+1。但从我的角度来看,这没有任何意义。假设n = 3并且外环在i = 3时执行其最后一个循环,则j将运行内循环3次(从3到5,因为j = 3 = n <2 * n = 2 * 3 = 6) 。但是,回答说inner loop runtime is n+1,如果我将{3}放入n+1,则会变为4次。我不明白为什么这个答案是正确的。

问题2)

如何从1.5n^2 + 0.5n获取答案2n+(2n-1)+(2n-2)+...+(n+1)的最后一种形式?你能告诉我前者在数学方面如何成为后者的整体步骤吗?具体关于2n + (2n-1) + (2n-2) + ... + (n+1)成为n*n + (1+2+3+...+n)的方式?我认为公式n(n+1)/2n=(n+1)一起使用,但它对我不起作用。

这里使用的是什么配方?

1 个答案:

答案 0 :(得分:0)

问题1

你说得对,因为内部循环运行时应该 2n-i ,因此对于i = n,内部循环运行时应该是n。答案是错误的。

问题2

正确的答案应该是

  

2N +(2N-1)+ ... + N

你可以做的是你可以构建另一个序列总和

  

N +(N + 1)+ ... + 2n个

对于所有i = 0..n,您将2n-i与n + i匹配 因此你有3n的(n + 1)项,所以2个完全相同的序列的总和是3n(n + 1),因此1个序列的总和是1.5n(n + 1)

或者您可以只应用算术级数之和的公式,请参阅维基页面 https://en.wikipedia.org/wiki/Arithmetic_progression