算法时间、空间复杂度
算法时间复杂度
时间复杂度分类
- 常数阶
顺序结构的时间复杂度为O(1)
单纯的分支结构时间复杂度为O(2)
上图时间复杂度为O(1) - 线性阶
int i; for(i = 0;i<n;i++) { /*时间复杂度为O(1)的程序步骤 }
3.对数阶
4.平方阶
因此循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数
理解大O阶的推到并不算难,难的是对数列的一些相关运算。
对于函数调用的时间复杂度分析:
int i,j;
for(i = 0; i<n; i++)
{
function(i);
}
void function(int count)
{
print(count);
}
以上 function函数的时间复杂度为O(1),所以整体的时间复杂度为O(n)。
假如function变成这样:
void function(int count)
{
int j;
for(j = count; j<n; j++)
{
//时间复杂度为O(1)的程序步骤序列
}
}
时间复杂度为O(n2)
下面这段:
常见时间复杂度
参考文献 《大话数据结构》 程杰 著