一段程序执行的时间是无法准确技术的,通常安装程序执行次数来估算,用T(n)表示。用大写字母O表示算法时间复杂度,称为算法的时间渐进复杂度。
(1)时间复杂度为O(1)的情况
int i=3; //执行1次
while(i<99) //执行34次
i=i+3; //执行33次
程序共执行69次,只要是执行次数为常数,T(n)=O(1)。
(2)时间复杂度为O(n)
int i,s=0; //执行1次
for(i=0;i<n;i++) //执行n+1次
s=s+1; //执行n次
prinf("%d",s); //执行1次
程序共执行2n+3次,只取最高级别的项,去掉该项系数,那么T(n)=O(n)。
(3)时间复杂度为O(n2)
int i,j,s=0; //执行1次
for(i=0;i<n;i++) //执行n+1次
for(j=0;j<n;j++) //执行n(n+1)次
s=s+1; //执行n^2次
程序共执行2n2 +2n+2次,去最高项,去常数,那么T(n)=O(n2)。
(4)常见时间复杂度按照数量级别递增排列
常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),……,k次方阶O(nk)和指数阶O(2n)。
参考书:数据结构(c语言版)