以下程序的时间复杂度是多少?
这个问题在这里已经有了答案:
在你的外部循环中,你将从n→n ^ 2,即(n ^ 2-n)次迭代是O(n ^ 2)。
在你的内部循环中,你将从1-(大约)(n ^ 2)log(n ^ 2),即O((n ^ 2)log(n))
a[i][j]+=3*i*j;
是O(1),所以你没有贡献。
把它放在一起,你有O(n ^ 2 * n ^ 2 * log(n)),它是O(n ^ 4 log(n))
迈克的回答是正确的,只是以不同的方式扩展步骤
内循环:const * i * log(i)外循环:const * i * log(i)的Sum(i over 1:n ^ 2)
O(算法)= O(Sum(i超过1:n ^ 2)的i * log(i))
从http://en.wikipedia.org/wiki/Summation我们发现
(i * log(i))= Theta(m ^ 2 * log(m))的和(i超过1:m)
替代m = n ^ 2我们得到
O(algo)= O(n ^ 2)^ 2 log(n ^ 2)= O(n ^ 4)log(n)(消除2)(其实这是算法的θ)
编辑:我只是注意到外环是我在n:n ^ 2,但答案是相同的
链接地址: http://www.djcxy.com/p/39361.html