算法的设计目标
算法设计应该满足以下几个目标:
- 正确性。这是最重要也是最低标准。
- 可使用性。也叫用户友好型。
- 可读性。算法的逻辑必须是清晰的、简单的和结构化的。
- 健壮性。要求算法具有很好的容错性,提供异常处理。
- 高时间性能和低储存需求。
算法的时间性能分析
计算算法频度 T ( n ) T(n) T(n)
假设算法的问题规模为 n n n,问题规模是算法输入数据量的大小。比如对十个整数排序的规模就是10.算法的频度是问题规模 n n n的函数,用 T ( n ) T(n) T(n)表示。
算法的执行时间大致等于原操作所需时间 × T ( n ) \times T(n) ×T(n)。简单来说就是和操作次数成正比。
T ( n ) T(n) T(n)的时间复杂度表示
一般算法的时间复杂度采用 T ( n ) T(n) T(n)数量级的形式 O ( n ) O(n) O(n)。时间复杂度分析实际上是一种时间增长态势分析。
一般来说,在没有和 n n n相关循环的算法问题中,时间复杂度为 O ( 1 ) O(1) O(1),有一重循环为 O ( n ) O(n) O(n)。
算法的时间复杂度可以分为最好、最差和平均,这由输入的特定数据决定。
算法的存储空间分析
一个算法的存储量包括形参所占空间和临时变量所占空间。在对算法进行储存空间分析时只考虑临时变量所占空间。若一个算法所需要的临时空间相对于问题规模来说是常数,那么称此算法为原地工作。(即临时变量的数目和问题规模不相关)。