计算一个算法的时间复杂度,就是计算程序需要运行多长时间。通常用大写的O符号来表示,最终只保留最高阶项且省略系数,考察在输入值趋近无穷时的所用时间。
O(n)表示渐进时间复杂度,o(n)表示最坏时间复杂度
计算方法:1、确定算法中各语句的执行次数,
2、确定其数量级,数量级一般包括:1,log(2)n,n^2,n^3,2^n,n!等
eg1:int fun(int n)//递归调用
{
if(n<=1)
{return 0;}
return fun(n-1)+1//时间复杂度是n 从n开始调用,直到n=1结束调用,从n到n-1到n-2……,直到1,反过来想,共调用n次所以时间复杂度为O(n)
}
eg2:int fun(int n)
{
if(n<=1)
{return 0;}
return fun(n/2)+1//时间复杂度是log(2)n 调用后如果令n/2 = 1调用就结束了 n,n/2,n/4……反过来想是1,2,4,8……2^n,令2^n等于一,可知n=log(2)n
}
注意;①一般如果有循环的话,只需要算循环最内层的数量级就可以
②如果有二分例如快速幂,二分查找数量级为logn
③如果是循环套二分,则时间复杂度为nlogn