跳转至

复杂度


时间复杂度

算法效率的度量

  • 事后统计
  • 事前分析估算

算法时间取决于算法的控制结构(顺序,循环,分支)和原操作(固有数据类型大的操作)
从算法中选取基本操作的原操作,以该基本操作重复执行的次数作为算法的时间度量。

时间复杂度:T(n) = O(f(n))
随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同
即算法内的原操作重复执行次数算法执行时间正比

例如: {++x;} 时间复杂度:O(1)
for(int i = 0; i< n;i++>){++x;} 时间复杂度O(n)
for(int i = 0; i< n;i++>) for(int j = 0; j< n;j++>){++x;}时间复杂度O(n^2)

常见时间复杂度

time

平均时间复杂度

所有可能的数据输入集的期望值

最坏时间复杂度

最坏情况下的时间复杂度

空间复杂度


算法所需空间的度量
空间复杂度:S(n) = O(f(n))