渐近增长(Big o表示法)

时间:2018-03-13 01:04:34

标签: time-complexity big-o asymptotic-complexity

我要做的是对以下功能进行排序:

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)大时间复杂度和渐近增长是不同的东西?

如果有人炸毁我的困惑,我将非常感激...谢谢!

1 个答案:

答案 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更快 。再次,这直接来自上面的结果。请注意,它比nlog n;同样适用于n / log^2 n

结合上述内容,我们发现增加的顺序是:

  1. sqrt(n)

  2. n / log^2 n

  3. n / log n

  4. n

  5. n log n

  6. sqrt(n^3)

  7. n^3

  8. 所以我不敢说你只有一些订单正确。

    编辑:回答您的其他问题:

    • 如果您将f(n) / g(n)的限制设为n -> infinity,则可以说f(n)渐近大于g(n)如果此限制为无限,如果限制为零则更小。这直接来自definition of big-O

    • big-O是一种分类渐近增长的方法,通常在参数接近无穷大时。