算法的复杂度包含两方面:时间复杂度和空间复杂度。
一.算法的时间复杂度
算法的时间复杂度的测量是对于给定问题,该算法所执行的基本运算的次数,对于不同的问题,选择的基本运算的类型不同。算法的时间复杂度可以分为最坏情况下的时间复杂度和平均情况下的时间复杂度。
二.算法的空间复杂度
对于一个算法来说,对于内存空间的占用包括两方面:
- 存储程序和输入数据的空间
- 存储中间结果或操作单元所占用空间--额外空间
对于一个问题而已,存储数据所占用的空间对于每一个算法而已都是相同的,而对于存储程序的空间而言,由于存储程序的空间一般是常量(和输入的规模无关);对于不同的算法,需要存储的中间结果和操作是不相同的,因此,算法的空间复杂度主要考虑的是算法所占用的额外空间。
当一个算法的额外空间相对于输入规模是常数时,称为原地工作算法。
参考文献
[1] 屈婉玲, 算法设计与分析: 清华大学出版社, 2011.
[2] 科曼 and 金贵, 算法导论: 机械工业出版社, 2006.
[3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, "算法导论 (影印版)," ed: 北京: 高等教育出版社.
[4] 汝佳. 算法竞赛入门经典[M]. 清华大学出版社, 2009.