l 算法设计的要求
1. 正确性(Correctness)
2. 可读性(Readablity)
3. 健壮性(Robustness)
4. 高时间效率与低存储量需求
l 算法时间效率的度量
1. 算法时间效率度量的基本做法
在算法中选取一种对于所研究问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间度量。一般而言,这个基本操作是最深层循环内的语句中的原操作。
2. 算法语句频度与时间复杂度的关系
一般算法消耗的实际时间为算法中每条语句频度之和,是n的函数T(n)。当n趋于无穷大时,T(n)的同阶无穷小即是算法的时间复杂度,记为T(n)=O (f (n))。
例如:
for (i=1; i<=n; ++i)-------------------------- n+1
for (j=1; j<=n; ++j)--------------------- n×(n+1)
{
c[i][j] = 0;-------------------------- n2
for (k=1; k<=n; ++k)------------------ n2×(n+1)
c[i][j] += a[i][k]*b[k][j];------- n3
}
总时间消耗:T(n)= 2n3+3n2+2n+1
时间复杂度:T(n)=O(n3)
l 算法存储空间的度量
1. 算法存储空间度量的基本做法
用程序执行中需要的辅助空间的消耗作为存储空间度量的依据,是问题规模n的函数。而程序执行中本身需要的工作单元不能算。
2. 算法空间复杂度
S(n)=O (f(n)) 称为算法的空间复杂度。