如何使用Big O来计算增长率?
我刚刚开始学习Big O符号,并对如何计算算法的增长率提出了疑问。 假设我有一个O(√nlog n)时间复杂度的算法,对于n = 10,我的算法需要2秒。 如果我想知道n = 100需要多长时间,我是否设置了一个比率,其中2 / x =(√10log10)/(√100log100),然后求解x? 或者我可以说我的输入是10倍大,所以需要2 *(√10log 10)秒?
第一种方法是正确的。 大O不关心常数倍数,所以你可以通过用代数求解常数来确定常数。
c*(√10*log(10)) = 2
c = 2/(√10*log(10))
√100*log(100) * 2/(√10*log(10)) = x
但是,请记住,大O也不关心“较小”的术语,所以这些不变的开销和其他较小的比例因子只会使这种计算渐近准确。 例如,一个算法由以下等式来管理:
(√nlog n + 1 / n)= t
仍然是O(√nlog n),这会使你的计算对于n的小值不太准确。
链接地址: http://www.djcxy.com/p/40047.html