我知道,对于f(n)为O(g(n)),我们必须找到一个常数c> 0和n 0 使得f(n)≤c⋅g(n)
只要n≥n 0
所以我想的是,如果我们将c设为2,例如n 0 为1,那么在我看来n 0.5 是O(n 0.5 )。我是对的吗?
答案 0 :(得分:1)
你的论证是正确的,但如果你使n0非常大,比如n0 = 10 ^ 6,那么n ^ 0.5> = 1000,并且n ^ 0.5和ceil之间的差异,则更容易看到发生了什么(n ^ 0.5)是< = 1,因此显然被c = 2覆盖,实际上显然是微不足道的。正如Potatoswatter指出的那样,只要f(n)增加,你就可以使n足够大,使得常数的变化显然是微不足道的,无论常数是多少。