帮助大O符号

Ste*_*ven 9 algorithm big-o time-complexity

我在尝试掌握大O符号的概念时遇到了一些问题.所以,根据定义,大O如下,T(n) ? O(G(n)) if T(n) <= G(n) * C.

由于常量"C"可以是> 0的任何整数,以下示例也不会成立吗?

例:

n log n ? O(log n)
n log n <= log n * c
Run Code Online (Sandbox Code Playgroud)

其中C等于n的值.

我知道答案是,n log n ? O(log n)但我不明白,因为C可以是任何常数.

在此先感谢您的帮助:D

Bor*_*lid 11

c就是这样,一个常数.这意味着你不能说"让c为n的值",因为你必须首先选择一些c然后允许比较为所有n保持.

换句话说,为了使一些T(N)是O(G(n))的,必须存在常数c,使得G(N)*c大于T(n)的对所有的n大.

因此,n log n不是O(log n),因为无论你选择什么常数,n> c都会导致n log n大于c log n.