Big-Theta还具有log(n!)和log(n)+ log(n ^ 2)中的运行时间

时间:2016-05-14 18:34:17

标签: algorithm big-o asymptotic-complexity big-theta

log(n!)= log(n * n(-1)* .... 1)= log(n)+ log(n-1)+ .... + log(1) 。所以它在 O(n * logn)中。但它也在 big-Omega(n * logn)吗?我不这么认为,但我的自动面试测试是这样想的!

log(n)+ log(n ^ 2)= log(n)+ 2 * log(n)= 3 * log(n)。所以,它是,大O,大欧米茄和大-Theta(log(n))。但出于某种原因,我的自动面试测试却不这么认为。

我的理解是正确还是自动化测试正确?

P.S:我讨厌自动面试测试!

2 个答案:

答案 0 :(得分:1)

  

log(n)+ log(n ^ 2)= log(n)+ 2 * log(n)= 3 * log(n)。所以,它是,大O,   big-Omega和big-Theta(log(n))。但出于某种原因,我的自动化   面试测试不然。

IMO,你是对的,自动面试测试不是(如果你正确提出了问题)。

  

log(n!)= log(n n(-1) .... 1)= log(n)+ log(n-1)+ .... + log( 1)。就是这样   在O(n logn)。但它是否也在大欧米茄(n 登录)?我不这么认为,   但我的自动面试测试是这样想的!

自动面试测试是正确的,你不是。 log(n!)= log(n)+ log(n-1)+ .... + log(1)> = log(n)+ ... + log(n / 2)=(n / 2 )log(n / 2)> =(n / 2)log(sqrt(n))= n * log(n)/ 4(所有“> =”用于足够大的n)

答案 1 :(得分:1)

关于log n!和大欧米茄:

N!将数字从1乘以n。这些数字的后半部分都是≥n/2≥sqrt(n),所以log n! ≥(n / 2)* log(sqrt(n)))= n / 2 * log(n)/ 2 =(n log n)/ 4.下限非常糟糕,但足以显示日志N! =大欧米茄(n log n)。