二叉树的大O符号

时间:2013-08-03 01:30:09

标签: algorithm big-o

我的教科书说用于在二叉树中查找节点的Big O表示法是O(log 2 N),如果N = 1则log 2 N将为0,这是不可能的?这会被简化为1还是更多呢?

5 个答案:

答案 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节点的二叉树中查找节点的大NO(log N)的语句为false。该陈述适用于二进制搜索树,但不适用于一般二叉树。

  

如果N = 1,那么log N将为0,这是不可能的?这会被四舍五入到1还是更多呢?

没关系。要说f很大O(log n)就是说有一个常量CN以便

n >= N implies f(n) <= C * g(n)

也就是说,最终 fC * g限制。因此,如果不可能满足包括n = 0在内的有限数量的值,则无关紧要。那是O是关于描述渐近行为,而不是所有行为。

答案 4 :(得分:1)

是的,它只会为零,但您必须先决定要在哪个上下文中讨论它。如果你看看BigO的定义那么就没有必要替换N的值,只是试着去理解什么是更坏的情况。

但如果你在考虑时间问题,那么当树中只有一个节点时,没有什么可以搜索的。

最后但并非最不重要的是,此log(n)时间复杂度适用于平衡二进制搜索树,而不适用于普通二进制树。