标签:
何为时间空间复杂度?
《1》空间复杂度O(N):
一个算法在运行过程中临时占用存储空间大小的量度。一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。
举例:
(1)如一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(N)
(2)当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为O(log2n)
(3)当一个算法的空间复杂度与n成线性比例关系时,可表示为O(n)
(4)递归函数的时间复杂度是O(N),因每次递归都需保存函数内部局部变量的存储空间。
《2》时间复杂度
它定量描述了该算法的运行时间。算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和 f(n) 的增长率成正比,所以 f(n) 越小,算法的时间复杂度越低,算法的效率越高。
常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
标签:
原文地址:http://my.oschina.net/cn0512/blog/517245