算法的复杂度

时间复杂度
算法运行后对时间需求量的定性描述。
空间复杂度:
算法运行后对空间需求量的定性描述。
本章重点讨论时间复杂度
符号定性——大O表示法:
——算法效率严重依赖于操作(Operation)数量
——操作数量的估算可以作为时间复杂度的估算
——在判断是首先关注操作数量的最高次项
O(5) = O(1)
O(2n+1) = O(2n) = O(n)
O(n^2+n+1) = O(n^2)
O(3n^3+1) = O(3n^3) = O(n^3)
常见的时间复杂度:
线性时间复杂度 O(n)

for(int i=0; i

对数阶时间复杂度 O(logn)

int i=1;
while( i < n )
{
        //复杂度为O(1)的语句
        i *= 2;
}   //循环次数 log2n

平方阶时间复杂度 O(n^2)

for( int i=0; i

计算时间复杂度的时候只取最高次项计算即可,且大O表示法也只针对最高次项。