algorithm - Big-Theta 函数也适用于 log(n!) 和 log(n)+log(n^2) 中的运行时间

标签 algorithm asymptotic-complexity big-o

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)。所以,它在 big-O、big-Omega 和 big-Theta(log(n)) 中。但出于某种原因,我的自动面试测试不这么认为。

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

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

最佳答案

log(n)+log(n^2) = log(n)+2*log(n) = 3*log(n). So, it is in, big-O, big-Omega and big-Theta(log(n)). But for some reason my automated interview test thought otherwise.

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

log(n!) = log(nn(-1)....1) = log(n)+log(n-1)+....+log(1). So it is in O(nlogn). But is it also in big-Omega(nlogn)? I don't think so, but my automated interview test thought so!

自动面试测试是正确的,而你不是。 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)

关于algorithm - Big-Theta 函数也适用于 log(n!) 和 log(n)+log(n^2) 中的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230439/

相关文章:

algorithm - 相乘和相加不同的渐近符号

algorithm - 渐近符号 - n (log n) (log n) 简化了吗?

javascript - 递归总是能提高性能吗?

javascript - JavaScript 堆算法中 for 循环的奇怪行为

c++ - 如何将最高值的 1 位设置为 0 ,最好在 C++ 中

java - 创建一个出现在两个给定数组java中的值数组

c++ - 带有 if 语句的嵌套 for 循环的时间复杂度

arrays - 打印长度为 2 到 n+1 的所有可能子序列的元素总和的高效算法

algorithm - 两个线性嵌套循环的 Big-theta 运行时间,对于外部的每次迭代,内部运行的次数是外部的一半。

algorithm - 两个不等维矩阵相乘的时间复杂度是多少?