常用时间复杂度

按数量级递增排列,常见的 时间复杂度有:
常数阶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 algorithmAKS质数测试
准多项式时间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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值