算法的复杂度
时间复杂度: 算法运行后对时间需求量的定性描述。 空间复杂度: 算法运行后对空间需求量的定性描述。 本章重点讨论时间复杂度 符号定性——大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<n; i++)
{
//复杂度为O(1)的语句
} //循环次数为n
对数阶时间复杂度 O(logn)
int i=1;
while( i < n )
{
//复杂度为O(1)的语句
i *= 2;
} //循环次数 log2n
平方阶时间复杂度 O(n^2)
for( int i=0; i<n; i++ )
for( int j=0; j<n; j++ )
{
//复杂度为O(1)的语句
} //循环次数n^2
计算时间复杂度的时候只取最高次项计算即可,且大O表示法也只针对最高次项。