21. 給定下列的函數,請依照函數的增長速度找出增長速度最快和增長速度最慢的函數。
 609c7707d7b27.jpg,(n -2) !, nlog(n) , log(n!) , 609c774da0ec0.jpg , 0.041n3 , √n
(A) 最大 609c77738c2c5.jpg ,最小 √n
(B) 最大 609c77873430d.jpg ,最小 nlog(n) 
(C) 最大 log(n!) ,最小 0.041n3   
(D) 最大(n -2) !,最小609c77c2c7a8f.jpg

答案:登入後查看
統計: A(16), B(26), C(4), D(44), E(0) #2706363

詳解 (共 1 筆)

#5757539

首先將各個時間複雜度函數作化簡,使其方便做比較。

  • O(n17)
  • O(log10 n)
  • O(0.041n3) = O(n3)
  • O( (n-2)! ) ≈ O((n/e)n-2))  (因爲 n! ≈ sqrt(2πn) * (n/e)n
  • O( n log n )
  • O( log(n!) ) ≈ O(log (n^n)) ≈ O(n log n)
  • O(25n) = O(2n)
  • O( sqrt(n) ) = O(n0.5)

其中 O( (n-2)! ) 及 O(25n) 化簡後,可看出兩者均遠大於其他複雜度函數;但兩者間依然難以一眼看出勝負(當然,若直接判斷其sqrt(n)*nn特性可知前者必大於後者),因此可用遞進方式探討:

  • O( (n-2)! ) : 當 n 提升 1 時,複雜度函數提升 n - 1 倍
  • O(25n):當 n 提升 1 時,提升 25 倍,即 32 倍

當 n > 33 後, O( (n-2)! ) > O(25n) 恆成立。

O(log10 n) < O( sqrt(n) ) < O(n log n) < O(log (n!)) < O(n17) < O(0.041n3) < O(25n) < O((n-2)!)

0
0