ustbfym 2019-12-04
1.1.3 算法的复杂度
算法的复杂度主要包括时间复杂度和空间复杂度。
1.算法的时间复杂度
所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
算法所执行的基本运算次数还与问题的规模有关。
算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数。
在同一个问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用以下两种方法来分析算法的工作量。
(1)平均性态(Average Behavior)
所谓平均性态分析,是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。
(2)最坏情况复杂性(Worst-Case Complexity)
所谓最坏情况分析,是指在规模为n时,算法所执行的基本运算的最大次数。
2.算法的空间复杂度
一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。