回 帖 发 新 帖 刷新版面

主题:[讨论]时间复杂度

[size=3][/size][color=0000FF][/color]
for(i=1;i<n;i++)
 { j=i;
   while(j<n)
    j*=2;
  }
 求该程序的时间复杂度?
谢谢了啊!

回复列表 (共6个回复)

沙发

外循环是n,内循环接近logn
O(nlogn)

板凳


外循环是N吗?
确定吗?

3 楼

同rickone

4 楼

算到这样就可以了,但是如果想求精确值的话是这样nlogn-log(n!)
[quote]外循环是n,内循环接近logn
O(nlogn)[/quote]

5 楼

我不太清楚是否 nlogn==O(log(n!))

严格的算应该是
[log(n)]+[log(n-1)]+[log(n-2)]+...+[log(1)]
有取整符号,于是按平均概率看,有一半的数值会接近[log(n-1)],那应该是和[log(n-1)]n/2,所以觉得是O(nlogn),至于在数学上是否有前面那个式子,我不知道。

6 楼

是不应该是log2(n/2)

我来回复

您尚未登录,请登录后再回复。点此登录或注册