微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 O(log(n)) 等于 O(log(n!))?

如何解决为什么 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 举报,一经查实,本站将立刻删除。