一、算法时间复杂度
定义:一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。
一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)
1.复杂度为O(1)
Temp=i;i=j;j=temp;
以上三条单个语句的频度均为1,该程序段的执行时间是一个常数,与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
2.复杂度为O(n^2)
sum=0; (一次)
for(i=1;i<=n;i++) (n次 )
for(j=1;j<=n;j++)(n^2次 )
sum++; (n^2次 )
解:T(n)=2n2+n+1 =O(n^2)