快速思考;有人认为O(∞)实际上是O(1)吗?
或者是表达它的唯一'正确'方式O(∞)?
答案 0 :(得分:10)
Infinity不是数字,或者至少不是real number,因此表达式格式不正确。表达这一点的正确方法是简单地声明程序不会终止。注意:程序,而非算法,因为算法可以保证终止。
(如果你愿意,你可以在超限数字上定义big-O表示法。但我不确定这是否会有用。)
答案 1 :(得分:7)
你的论点不太正确。
大O符号忽略常数倍; O(1)
和O(42)
之间或O(log(n))
和O(3π log(n))
之间没有区别。
标准惯例是不使用任何常数倍。
但是,O(∞)
表示永远不会终止的“算法”,而O(1)
将终止于某个点。
答案 2 :(得分:3)
回答这个问题:
O符号,O(∞)= O(1)?
否强>
主要区别在于O(1)将在某个点结束,而O(∞)永远不会结束。
它们都不包含变量,但具有不同的含义:
O(1)
(或O(121)或O(无论但不是无穷大):函数参数的独立,但结束
O(∞)
:函数参数的独立,非结束
正如另一个答案所指出的那样,无穷大并非真正属于大O符号的范畴,但当然简单的“不”仍然是O(1)和O(∞)并不相同。
答案 3 :(得分:0)
Big-Oh衡量资源需求在N增加时如何扩展。 O(5小时)和O(5秒)都是O(1),因为当N增加时不需要额外的资源。