常用时间复杂度

来源:互联网 发布:c 在线客服系统源码 编辑:程序博客网 时间:2024/06/15 05:08
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,

k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。

时间复杂度:基本操作重复执行的次数的阶数 T(n)=o(f(n))以下六种计算算法时间的多项式是最常用的。其关系为: O(1)<O(logn)<O(n)<O(nlogn) <O(n2)<O(n3)指数时间的关系为:   O(2n)<O(n!)<O(nn)   当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊。

以下是一些常见时间复杂度的例子。

名称复杂度类运行时间(T(n))运行时间举例算法举例常数时间 O(1)10判断一个二进制数的奇偶反阿克曼时间 O(\alpha(n)) 并查集的单个操作的平摊时间迭代对数时间 O(\log^{*}n) en:Cole-Vishkin algorithm对数对数时间 O(\log \log n) 有界优先队列的单个操作[1]对数时间DLOGTIMEO(\log n)\log n\log n^2二分搜索幂对数时间 (\log n)^{O(1)}(\log n)^2 (小于1次)幂时间 O(n^c),其中0 < c < 1n^{\frac{1}{2}}n^{\frac{2}{3}}K-d树的搜索操作线性时间 O(n)n无序数组的搜索线性迭代对数时间 O(n\log^{*}n) Raimund Seidel三角分割多边形算法线性对数时间 O(n\log n)n\log n\log n!最快的比较排序二次时间 O(n^2)n^2冒泡排序、插入排序三次时间 O(n^3)n^3矩阵乘法的基本实现,计算部分相关性多项式时间P2^{O(\log n)} = n^{O(1)}nn \log nn^{10}线性规划中的en:Karmarkar's algorithm,AKS质数测试准多项式时间QP2^{(\log n)^{O(1)}} 关于有向斯坦纳树问题最著名的O(\log^2 n)近似算法次指数时间(第一定义)SUBEXPO(2^{n^{\epsilon}}),对任意的ε > 0O(2^{(\log n)^{\log \log n}})Assuming complexity theoretic conjectures, BPP is contained in SUBEXP.[2]次指数时间(第二定义) 2o(n2n1/3Best-known algorithm for integer factorization and graph isomorphism指数时间E2O(n)1.1n, 10n使用动态规划解决旅行推销员问题阶乘时间 O(n!)n!通过暴力搜索解决旅行推销员问题指数时间EXPTIME2poly(n)2n, 2n2 双重指数时间2-EXPTIME22poly(n)22nDeciding the truth of a given statement in Presburger arithmetic

0 0
原创粉丝点击