1.3.4 算法的存储空间需求

  算法的存储量指的是算法执行过程中所需的最大存储空间。算法执行期间所需要的存储量应该包括以下三部分:(1)输入数据所占空间;(2)程序本身所占空间;(3)辅助变量所占空间。

  类似于算法的时间复杂度,通常以算法的空间复杂度作为算法所需存储空间的量度。定义算法空间复杂度为
   S (n) = O (g(n))

  表示随着问题规模n的增大,算法运行所需辅助存储量的增长率与g(n)的增长率相同。

  例如算法1.1、1.2和1.3的空间复杂度均为O (1),因为这三个算法所需辅助空间都只是若干简单变量,和问题规模无关。这类所需额外空间相对于输入数据量来说是常量的算法,被称作是原地工作的算法。

  也和算法时间复杂度的考虑类似,若算法所需存储量依赖于特定的输入,则通常按最坏情况考虑。
   
 
  程序代码本身所占空间对不同算法通常不会有数量级之差别,因此在比较算法时可以不加考虑;算法的输入数据量和问题规模有关,若输入数据所占空间只取决于问题本身,和算法无关,则在比较算法时也可以不加考虑;由此只需要分析除输入和程序之外的额外空间。