我的教科书说用于在二叉树中查找节点的Big O表示法是O(log 2 N),如果N = 1
则log 2 N将为0,这是不可能的?这会被简化为1
还是更多呢?
答案 0 :(得分:4)
当N变为∞时,O符号仅关注限制行为。形式上,非负函数f在O(g(n))类中,如果有一个常数C和另一个常数N,那么
n ≥ N ⇒ f(n) ≤ C g(n).
n的常数因子和小值根本无关紧要。
答案 1 :(得分:3)
Big-O表示法用于描述算法的执行时间(或内存消耗,或......)在数据量(或N
描述的任何内容)向无穷大增加时如何扩展。在给定N
的特定值时,并不意味着提供精确的运行时。 N
值较低时,常数因素往往占主导地位。在这种情况下,你想要得到的只是这个特定算法的执行时间以对数方式进行缩放。
答案 2 :(得分:1)
Big O是渐近复杂度 - 实际运行时类似于log 2 N + C,因此对于N = 1
,您的运行时间为C
答案 3 :(得分:1)
首先,在O
节点的二叉树中查找节点的大N
为O(log N)
的语句为false。该陈述适用于二进制搜索树,但不适用于一般二叉树。
如果N = 1,那么log N将为0,这是不可能的?这会被四舍五入到1还是更多呢?
没关系。要说f
很大O(log n)
就是说有一个常量C
和N
以便
n >= N implies f(n) <= C * g(n)
也就是说,最终 f
受C * g
限制。因此,如果不可能满足包括n = 0
在内的有限数量的值,则无关紧要。那是O
是关于描述渐近行为,而不是所有行为。
答案 4 :(得分:1)
是的,它只会为零,但您必须先决定要在哪个上下文中讨论它。如果你看看BigO的定义那么就没有必要替换N的值,只是试着去理解什么是更坏的情况。
但如果你在考虑时间问题,那么当树中只有一个节点时,没有什么可以搜索的。
最后但并非最不重要的是,此log(n)时间复杂度适用于平衡二进制搜索树,而不适用于普通二进制树。