算法复杂度一般分为时间复杂度和空间复杂度。一个高级语言编写的程序在计算机上运行所消耗的时间取决于下列因素:
- 算法采用的策略、方案
- 编译产生的代码质量
- 问题的输入规模
- 机器执行指令的速度
时间复杂度
时间频度
一个算法中的语句执行次数。记为T(n);
时间复杂度
时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。为了知道变化呈现什么规律,引入时间复杂度。
若存在某个f(n),当n→∞时,T(n)/f(n)为不等于0的常数,则称f(n)是T(n)的同数量级函数。记T(n)=O(f(n));称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。
随着n的增大,时间的增长率和f(n)的增长率成正比。f(n)越小,算法的时间复杂度越低,算法的效率越高。
空间复杂度
算法所耗费的存储空间,记为S(n);
一个算在计算机存储器上所占用的存储空间一般包含以下几个方面: