关于程序的时间复杂度和频度的问题~
麻烦求一下这两个程序段的频度和时间复杂度吧~~
我的作业,错了~~~~~~~
这个频度到底是什么意思哦???
(1)i=1;
while (i <=n)
i=i*2
(2)
x=1;
for (i=1;i <=n;i++)
for (j=1;j <=i;j++)
for (k=1;k <=j;k++)
x++;
[解决办法]
第一个时间复杂度是O(n),第二个是O(n*n*n).
频度不能通过理论计算出来,只能上机测试。你可以在程序前后加上:
long =System.currentTimeMillis();
然后把两个数相减就能得到时间频度
[解决办法]
第一个的时间复杂度是 O(logN)
第二个:
f(1)=1;
.....
f(n)=f(n-1)+n*(n+1)/2;
f(n)=1+2*((2+1)+1)/2+....+n*(n+1)/2;
近似于 1^2+2^2+3^2+....+n^2=(2n+1)(n+1)n/6
所以复杂度为O(N^3);