在处理时间复杂性时,我认为O(n)
和O(kn)
相等。将常数k
视为整数> 1.任何方式kn > n
,对吗?
有人可以解释一下。我不是来自计算机科学背景。
答案 0 :(得分:2)
Big O符号来自极限观点,它有一个非常具体的定义。
我们说一个函数f(x) is O(g(x))
当且仅当x
,|f(x)| <= M * |g(x)|
的值很大,其中M
是常量且M > 0
。
此定义基本上意味着O(kn)
是O(n)
的子集。当然,O(2n)
中的算法总是比O(3n)
中的另一个算法快,但它们都属于O(n)
算法的大家族。
它们被认为是等价的,因为在处理无限大数时,没有人关心常数
答案 1 :(得分:1)
我已经评论过这应该迁移到cs.stackexchange.com(你会在那里找到关于Big O分析的更多细节),但以下是一个简短的答案:
Big O,Big Theta和Big Omega都处理随着输入大小增长而增长的事情。这是对事物的全貌。
高常数会影响运行时间,但增长率仍然是线性的。为了查看大图,常量被删除,即这种增长类型或功能族属于什么类型。在你的情况下,它是线性增长家庭。