下面我尝试显示算法执行的添加次数的下限。如果我的分析是否正确,请告诉我。
这是用于计算所有i,j i
1
我认为这个算法至少需要n ^ 3次操作。 这是我的论点:
因此算法预先形成n * n / 2 * n / 2 =(n ^ 3)/ 4次运算。
答案 0 :(得分:0)
它很接近,但你的证据并不能证明你想要的东西。你说:
- n从外部forloop迭代
醇>
好的,至少Ω(n)
- 如果i = n \ 2那么内部forloop将迭代至少n / 2次
醇>
当然,但是i = n / 2只进行一次迭代,所以这证明总共只有n / 2次迭代...再次至少Ω(n)
- 如果i = n / 2且j = n那么至少需要n / 2次加法来总结从i到j的元素
醇>
是的,但这些条件只会发生一次,所以这只能证明Ω(n)。
你要去的证据是这样的:
所以至少有((n / 4)(n / 2-1) - 1)(n / 4 - 1)加法,并且在Ω(n) ^ 3)强>
答案 1 :(得分:0)
你不必满足于下限。有一个确切的解决方案。
继续编写一个小程序,打印n
的前几个值的确切添加数。