目录
一、概况
一般来说,度量程序的执行时间有两种方法,事后统计方法和事前分析估算方法。
1.1 事后统计方法
通过程序运行后的情况来进行统计执行的时间。该方法具有一定可行性,但同样如下弊端:
(1)必须运行程序后才能实现。但有时候并不一定便于运行程序。
(2)容易受到运行硬件的影响。硬件性能的高低容易掩盖程序本身的质量。
1.2 事前分析估算方法
顾名思义这种方法是在程序运行前对程序的执行时间进行估算,这种方法能有效规避事后统计方法的弊端。因此,一般来说,我们一般使用事前分析估算方法,下文也将介绍两种常用的事前分析估算方法,时间复杂度和空间复杂度。
度量算法的优劣一般从时间和空间复杂度两个方面。
1.3 影响程序执行时间的因素
一般来说,有以下几种因素影响程序的执行时间:
(1)输入的规模
(2)算法的策略
(3)编译产生的代码质量
(4)机器的执行速度
二、时间复杂度
2.1 概念
通过程序时间增长速度指标来衡量算法的执行时间,一般记作: T(n) = O(f(n))。算法执行需要的时间的增长速度可以用 f(n) 来描述。
2.2 计算步骤
一般来说,计算时间复杂度的步骤如下:
(1)找出算法中的基本语句:即算法中执行次数最多的那条语句,通常是最内层循环的循环体。
(2)计算基本语句的执行次数的数量级;
(3)用大Ο记号表示算法的时间性能。
2.3 常见时间复杂度大小关系
三、空间复杂度
3.1 概念
通过程序需要消耗的空间来衡量算法的优劣。类似于时间复杂度,只是计算的不是运行次数,而是在运行过程中临时变量被运用次数。