首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[入门级有关问题]请问一段程序的时间复杂度

2012-03-31 
[入门级问题]请教一段程序的时间复杂度!voidfun3(intn){inti0,s0while(s n){i++ss+i}}具体怎么分析

[入门级问题]请教一段程序的时间复杂度!
void   fun3(int   n)
{
  int   i=0,s=0;
  while   (s <n)
        {
          i++;
          s=s+i;
        }
}
具体怎么分析这段程序的复杂度.



[解决办法]
第一个是n^(1/2);

第二个要看用什么方法,

直接建链表应该是n^2;
如果先排序,再建链表,肯定可以到nlogn;

[解决办法]
下来后我又想了一下,答案确实应该是O(N^1/2)。这里的时间复杂度是个循环的次数有关,而循环的次数又和输入的参数n有关:
设迭代的次数是K,则:
K(K+1)/2 = N
在N很大的情况下,==> K^2 = 2N
===> 这样就可以得出时间复杂度是O(N^1/2);

热点排行