问题描述
对以下表示运行时间的函数进行从小到大的排序(以 相对于 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?) 是指数的。