如何解决为什么 O(log(n)) 等于 O(log(n!))?
在解决代码的复杂性时,我发现它是 O(log(n!))。我知道这可以证明等于 O(n*log(n))。但是,有人能说出这个证明哪里出错了吗?
使用的定理:
- log(ab) = log(a) + log(b)
- O(a+b) = O(max(a,b))
证明
O(log(n!)) = O(log(n*(n-1)*(n-2)*...*2*1))
= O(log(n) + log(n-1) + ... )
= O(max(logn,log(n-1),...))
= O(log(n))
有人能告诉我哪里出错了吗?
解决方法
你不能说 O(log(n) + log(n-1) + ... ) = O(max(logn,log(n-1),...))
这仅适用于恒定数量的被加数。在您的情况下,该数字取决于 n。
否则你也可以证明
O(n)=O(1+1+1+1+1+...1) = O(max(1,1,...))= O(1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。