大小为n = 100的算法需要21秒才能运行。大小n = 1000需要31秒,而n = 10000需要41秒才能运行。什么是运行复杂性?
如果我尝试O(n)则:T(n)=(21 * 1000)/ 100 = 210 s(非O(n))
如果我尝试O(n ^ 2)则:T(n)=(21 * 1000 ^ 2)/ 100 ^ 2 = 2100 s(非O(n ^ 2))
如果我尝试O(log n)则:T(n)=(21 * log1000)/log100=31.5(不是O(log n))
我给出的另一个选项是O(1 / n)。我该如何计算?
答案 0 :(得分:6)
看起来像O(lgn)
。
当日志的基数为10时,n
的时间为T(n) = 10*log(n) + 1
。
答案 1 :(得分:1)
要解决此问题,请先从各个类中绘制一些函数。例如,要了解O(n)
线性类绘制函数T(n)=n
并了解O(n^2)
类绘制函数T(n)=n^2
。这将有助于您识别各种功能的形状。
之后,绘制问题中给出的点,使用x轴中的n值和y轴上的定时值。您应该能够快速识别此问题中的形状。
提示:这不是O(log n)
: - )