找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3078|回复: 3

[通用编程] 关于数据结构中的时间复杂度问题

[复制链接]
发表于 2007-4-15 09:19:20 | 显示全部楼层 |阅读模式
定义是说通常把算法中所包含的简单操作次数称为算法的时间复杂度,其通常用 O(1),O(n),
O(n!)等形式表示,而其中如果运行时间与n成正比,其时间复杂度就是O(n).
下面一程序:
void fun3(int n)
{
     int i=0,s=0;
     while(s<n)
      {
          i++;
          s=s+i;
       }
}

为什么其时间复杂度是如图所示,而不是O(n)呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2007-4-15 11:47:15 | 显示全部楼层
怎么说呢。。。那while循环并不是n次,而是近似为n的平方根次。。。因为每次循环,s的值并不是只增加1。。。。。。这结论好像用数学手段能推导出来。。。。
 楼主| 发表于 2007-4-15 17:23:58 | 显示全部楼层
那能否推出来看看呢? [s:2]  [s:2]
发表于 2007-5-2 00:56:38 | 显示全部楼层
因为s=1+2+3+4.....+n=n*(1+n)*2
要满足s<n
第一次 1=1          时间为1
第二次 1+2=3      时间为2
第三次 1+2=3      时间为2
第四次 1+2+3=6  时间为3
......可以看出随N增大,时间基本向sqrt(N)发展....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-10-30 21:44 , Processed in 0.012154 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表