Big o O(nⁿ;)和O(n!)的时间复杂度

Big o O(nⁿ;)和O(n!)的时间复杂度,big-o,complexity-theory,time-complexity,Big O,Complexity Theory,Time Complexity,获取下面的复杂度顺序 O(1), O(log(n)), O(n⋅log(n)),O(n), O(n²), O(2ⁿ), O(n!), O(nⁿ), O(n³). 顺序如下: O(1) < O(log(n)) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ) < O(nⁿ) < O(n!) O(1)

获取下面的复杂度顺序

O(1), O(log(n)), O(n⋅log(n)),O(n), O(n²), O(2ⁿ), O(n!), O(nⁿ), O(n³).
顺序如下:

O(1) < O(log(n)) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ) < O(nⁿ) < O(n!)
O(1)
在我看来,nⁿ = N⋅N⋅N⋅...
然而,
n!=n(n-1)(n-2)…
so
O(n!)

然而,另一位朋友说,
O(nⁿ) < O(n!)

因为
n!=sqrt(2πn)⋅ (不适用)ⁿ

我不知道如何得到这个,请解释更多。

假设N等于4

  • 如果调用O(N!),循环将为每个循环迭代N!次。第一个循环将是1,第二个循环将是1,2,第三个循环将是1,2,3,第四个循环将是1,2,3,4
  • 所以你有:
  • 一,
  • 1,2
  • 1,2,3
  • 1,2,3,4
  • 如果调用O(N^N),循环将对每个循环迭代N次。第一个循环将是1,2,3,4。第二个循环将是1,2,3,4。第三个循环将是1,2,3,4,第四个循环将是1,2,3,4
  • 所以你有:
  • 1,2,3,4
  • 1,2,3,4
  • 1,2,3,4
  • 1,2,3,4
  • 因此,您可以看到O(N!)将比O(N^N!)提前终止,因为它不必在每次迭代中循环到列表的末尾。因此,时间复杂度O(N!)
      公式
      n!≈ sqrt(2πn)⋅ (不适用)ⁿ被称为。
      但这也显示了
      O(n!)
      ,如果您知道
      sqrt(n)
      的增长速度比
      (1/e)慢得多ⁿ下降(用于增长
      n
      )。(
      limn→ ∞ sqrt(北)/eⁿ = 0),所以


      这足以说明
      O(n!)

      你好,Jongware,这不是家庭作业,我在练习一些面试问题。Chris,我修改了问题,你认为哪个更复杂?O(N^N)还是O(N!)?对于那些有数学背景的人,你可以通过取比率的极限来比较,即lim N->inf(N!/N^N)嘿,朱尼尔,这就是我的想法。然而,声称O(N!)具有更高复杂性的朋友向我展示了:N!=sqrt(2pi*N)(N/e)^N,让我困惑的是如何得到公式。
      O(n!) = O(sqrt(n) ⋅ (1/e)ⁿ ⋅ nⁿ) < O(nⁿ)
      
      nⁿ = n ⋅ n ⋅ ... ⋅ n   (n times)  
      n! = n ⋅ (n-1) ⋅ ... ⋅ 2 ⋅ 1 
         < n ⋅ n ⋅ ... ⋅ n = nⁿ