您的位置:首页 > 其它

算法复杂度的计算方法

2016-03-04 20:45 288 查看
引用转载自:
http://blog.chinaunix.net/uid-20490872-id-1665369.html http://www.icourse163.org/course/hit-356006#/info
常见算法时间复杂度:
O(1): 表示算法的运行时间为常量
O(n): 表示该算法是线性算法
O(㏒2n): 二分查找算法
O(n2): 对数组进行排序的各种简单算法,例如直接插入排序的算法。
O(n3): 做两个n阶矩阵的乘法运算
O(2n): 求具有n个元素集合的所有子集的算法
O(n!): 求具有N个元素的全排列的算法

优<---------------------------<劣

O(1)<O(㏒2n)<O(n)<O(n2)<O(2n)

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n2)、立方阶O(n3)、……k次方阶O(nk)、指数阶O(2n)、阶乘O(n!)。

大O是上界,叫做低阶函数,c和n0都是任意取的。

小o是严格低阶函数,对于任意的c,n>=n0时,0<=f(n)<=cg(n)。

并非所有函数都是可比的,即既不是大O关系,也不是Ω关系。

求解递归方程的三个主要方法

•替换方法:

–首先猜想,

–然后用数学归纳法证明.

•迭代方法:

–循环地展开递归方程

–把方程转化为一个和式

–然后用估计和的方法来求解.

•Master定理方法:

–求解型为T(n)=aT(n/b)+f(n)的递归方程

(1)若
 

 
那么
 


(2)若
 

 
那么
 


(3)若
 

 
且对于某个常数
 

 
和所有充分大
 

 

 

 
那么
 


也就是说把f(n)也化成n^k的形式,与 n^logba(以b为底a的对数)相比,若|k-logba| = ε,则可以使用master定理进行求解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 复杂度