根据时间复杂度排列函数

问题描述

对以下表示运行时间的函数进行从小到大的排序(以 相对于 n) 的增长率并将那些在同一等价类中的函数分组

函数列表

2n^3+12n^2+5,8(log n)^2,1.5^n,n^4-12n^3,4n^3(log n),4n^3,n!,7n+6
My solution in ascending order is :
8(log n)^2 - logarithmic complexity
7n+6       - linear complexity
2n^3+12n^2+5,4n^3 - polynomial complexity
n^4-12n^3 - polynomial complexity
1.5^n - Factorial complexity
n! - Exponential complexity

不确定我所做的是否正确。任何反馈将不胜感激。

解决方法

复杂性如下:

  • 2?3+12n2+5 = O(?3)
  • 8(log?)2 = O(log2?)
  • 1.5? = O(1.5?)
  • ?4−12?3 = O(?4)
  • 4?3log? = O(?3log?)
  • 4?3 = O(?3)
  • ?! = O(?!)
  • 7?+6 = O(?)

按复杂性分组并按升序排列时:

  • O(log2?)
    • 8(log?)2
  • O(?)
    • 7?+6
  • O(?3)
    • 2?3+12n2+5
    • 4?3
  • O(?3log?)
    • 4?3日志?
  • O(?4)
    • ?4−12?3
  • O(1.5?)
    • 1.5?
  • O(?!)
    • ?!

所以你的输出本质上有一个区别:O(?3log?) 不是 O(?3):第一个是更大的顺序:

我们可以用反证法来证明这一点。如果我们暂时假设 O(?3log?) 是 O(?3),那么我们可以找到一个 ?0 和一个?使得?3log? ≤ ??3 对于所有? > ?0。但这意味着 log? ≤ ? 或 ? ≤ 2?。这对于任何 ? > 2? 都不是真的,所以这个命题不成立。

另一个更正:标签“指数”和“阶乘”在您的输出中颠倒了。

O(?!) 是阶乘的,而 O(1.5?) 是指数的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...