时间复杂度
主要用来度量程序的运行速度。度量程序的运行速度有两种方法:
- 事后统计的方法
将两个程序实际运行一遍,比较运行的速度, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序,如果程序很大,运行比较慢,效率就很低了;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。 - 事前估算的方法
通过分析某个算法的时间复杂度来判断哪个算法更优。
时间频度
一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为 T(n)。也就是一个跟n相关的函数表达式
对于时间频度,在n趋向于无穷大时,我们可以忽略常数项、低次项、系数项(两个系数项不同的时间频度在n无穷大时成一个正比关系,比值是系数)
时间复杂度
- 一般情况下,算法中的基本操作语句的重复执行次数是问题规模 n 的某个函数,用 T(n)表示,若有某个辅助函数 f(n)