算法的效率可以在执行之前和执行之后的两个不同阶段进行分析。 它们如以 -
先验分析 - 这是一种算法的理论分析。通过假定所有其他因素(例如处理器速度)是恒定的并且对实现没有影响来测量算法的效率。
后验分析 - 这是对算法的经验分析。 所选择的算法使用编程语言来实现。 然后在目标计算机上执行。 在此分析中,收集实际的统计数据,如运行时间和所需空间。
假设X
是算法,n
是输入数据的大小,算法X
使用的时间和空间是决定X
的效率的两个主要因素。
算法f(n)
的复杂性以算法n
所需的运行时间和/或存储空间为输入数据的大小。
算法的空间复杂度表示该算法在其生命周期中所需的存储空间量。 算法所需的空间等于以下两个组件的总和 -
任何算法P
的空间复杂度S(P)
是S(P)= C + SP(I)
,其中C
是固定部分,S(I)
是算法的变量部分,取决于实例特征I
,下面是一个简单的例子,试图解释这个概念 -
Algorithm: SUM(A, B) Step 1 - START Step 2 - C ← A + B + 10 Step 3 - Stop
这里有三个变量A
,B
和C
以及一个常量。 因此S(P)= 1 + 3
。现在,空间取决于给定变量和常量类型的数据类型,并且它将相应地相乘。
算法的时间复杂度表示算法运行完成所需的时间量。 时间要求可以定义为一个数值函数T(n)
,其中T(n)
可以测量为步数,如果每步消耗的时间不变。
例如,添加两个n
位整数需要n
个步骤。 因此,总计算时间是T(n)= c * n
,其中c
是加两位所用的时间。 在这里,观察到T(n)
随着输入尺寸的增加而线性增长。