算法时间复杂度

分析算法的时间复杂度,关键是要分析循环结构的运行情况。

循环时间复杂度为O(n)的代码--线性阶

int i;
for(i<0;i<n;i++)
{
    时间复杂度为O(1)的程序步骤序列
}

对数阶

int count=1;
while(count<n)
{
    count=count*2;
/*时间复杂度为O(1)的程序步骤序列*/
}

由于每次乘2后,就距离n更接近了几分,也就是说有多少个2相乘后大于n,则会退出循环。由2x=n,得到x=log2n,所以这个循环的时间复杂度为O(logn)。

平方阶

1 int i,j;
2 for(i=0;i<n;i++)
3 {
4     for(j=0;j<n;j++)
5     {    
6 /*时间复杂度为O(1)的程序步骤序列*/
7     }
8 }

 

常见的时间复杂度:

O(n3),过大的n都会使得结果变得不现实,同样指数阶O(2n),阶乘阶O(n!),等除非是很小的n值,否者n哪怕只是100,都是噩梦般的运行时间,这种不且时间的算法复杂度,不做讨论。

对算法的分析,一种方法是计算所有情况的平均值,这种时间复杂度的计算方法为平均时间复杂度。另一种方法是计算最坏情况下的时间复杂度,这种方法称为最坏时间复杂度,一般在没有特殊说明的情况下,都是指最坏时间复杂度。

 


 

posted @ 2015-03-21 00:03  general001  阅读(132)  评论(0)    收藏  举报