我知道从头到尾遍历链接列表需要O(n)时间。如果我们两次遍历怎么办?还是O(n),对吗?因为我基本上是O(n + n)= O(2n)〜O(n)。
答案 0 :(得分:2)
是的。确实,您可以说f(n)
是否在O(n)
中,f(2n)
也是否在O(n)中。它来自符号的定义。
根据定义,存在一个c > 0
和N0
常量,使得f(n) < c * n
对应所有n > N0
。因此,f(2n) < c' * n
代表n > N0 / 2
,常数c'
。因此,f(2n)
也位于O(n)
中。
请注意,语句“如果f(n)
在O(g(n))
中,而f(2n)
在O(g(n))
中也是完全错误的!矛盾的例子是当f(n) = g(n) = 2^n
时。