算法时间复杂度
分析算法的时间复杂度,关键是要分析循环结构的运行情况。
循环时间复杂度为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,都是噩梦般的运行时间,这种不且时间的算法复杂度,不做讨论。
对算法的分析,一种方法是计算所有情况的平均值,这种时间复杂度的计算方法为平均时间复杂度。另一种方法是计算最坏情况下的时间复杂度,这种方法称为最坏时间复杂度,一般在没有特殊说明的情况下,都是指最坏时间复杂度。
能力决定舞台,业绩体现价值,财富回报才智!
不积跬步,无以至千里;不积小流,无以成江海!
千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。

浙公网安备 33010602011771号