我要做的是对以下功能进行排序:
n,n ^ 3,nlogn,n / logn,n / log ^ 2n,sqrt(n),sqrt(n ^ 3)
渐近增长的顺序递增。
我做的是,
n / logn,n / log ^ 2n,sqrt(n),n,sqrt(n ^ 3),nlogn,n ^ 3.
1)我的回答是否正确?
2)我知道基本函数的时间复杂度,如n,nlogn,n ^ 2,但我对n / nlogn,sqrt(n ^ 3)等函数感到困惑。 我应该如何确定哪一个更快或更慢?有没有办法用数学计算来做到这一点?
3)大时间复杂度和渐近增长是不同的东西?
如果有人炸毁我的困惑,我将非常感激...谢谢!
答案 0 :(得分:1)
我们需要的一个重要结果是:
对于任何严格正数log n
,
n^a
的增长速度比a > 0
慢。
有关上述内容的证明,请参阅here。
如果我们将sqrt(n^3)
重新写为n^1.5
,我们可以看到n log n
增长得更慢(按n
除以并使用上面的结果)。
同样地,n / log n
比其他n^b
b < 1
更快 。再次,这直接来自上面的结果。请注意,它比n
慢log n
;同样适用于n / log^2 n
。
结合上述内容,我们发现增加的顺序是:
sqrt(n)
n / log^2 n
n / log n
n
n log n
sqrt(n^3)
n^3
所以我不敢说你只有一些订单正确。
编辑:回答您的其他问题:
如果您将f(n) / g(n)
的限制设为n -> infinity
,则可以说f(n)
渐近大于g(n)
如果此限制为无限,如果限制为零则更小。这直接来自definition of big-O。
big-O是一种分类渐近增长的方法,通常在参数接近无穷大时。