一、时间效率
程序在计算机上执行所消耗的时间。
两种估算方式:
- 事后统计
- 事前分析
-
算法运行时间= 一个简单操作所需的时间X简单操作次数
-
算法运行总时间 = Σ每条语句执行次数(即:每条语句频度)X该语句执行一次所需的时间
-
每条语句执行一次所需的时间,是由机器本身软硬件环境决定的,与算法无关。
-
因此,我们可以假设每条语句所需时间均为单位时间,因此对算法的运行时间的讨论,可以转化为讨论该算法中所有语句的执行次数,即频度之和(T(n))。
-
为了便于比较不同算法的时间效率,我们仅比较它们的数量级。即为:时间复杂度(全称:渐进时间复杂度)
-
例如:T1(n)=10n²,T2(n)=5n³。则T1(n)=O(n²),T2(n)=O(n³)
-
T(n)=O(f(n))。算法中基本语句重复执行的次数是问题规模n的某个函数f(n)。【基本语句即为算法中执行次数最多的语句,一般都是循环中嵌套最深的语句。 】
-
时间复杂度T(n)按数量级递增顺序为:
二、空间效率
涉及空间时间复杂度S(n)=O(n)。
可参考:算法空间复杂度分析