c - 当我们为 50n logn 计算 Big-Oh 时,它是 O(n log n)?我们可以把 O(n^5) 当作 Big-Oh 吗?

标签 c algorithm data-structures big-o

我最近遇到了一些渐近符号,当这个问题出现时,它是 50 n logn 并且根据流行的规则获得 Big-OH​​ 符号是简单地删除常数和低阶项。但是 50n logn 也是n^5 的 BIG-OH。 那么为什么 Big-oh 表示法更适合考虑 O(nlogn) 而不是 O(n^5)。 Image showing 2 graphs .

当在 wolfram 中将输入大小更改为 0 到 50 时,结果图如下 enter image description here

最佳答案

50.n.log(n) = O(n^5) 完全正确。这在数学上没有问题。我们可以找到一个常量 C = 1,这样对于所有 n 都高于某个值 10 我们有

|50.n.log(n)| < C.|n^5|

有关 formal definition 的信息,请参见维基百科

这是毫无疑问的。

如果我们更愿意说 50.n.log(n) = O(n.log(n)) 是因为我们经常想知道什么是增长最慢的函数 决定了算法的复杂性。这通常用于比较算法复杂度。

关于c - 当我们为 50n logn 计算 Big-Oh 时,它是 O(n log n)?我们可以把 O(n^5) 当作 Big-Oh 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621237/

相关文章:

c++ - 有没有办法在函数调用中通过引用传递和通过值显式传递?

c++ - 提高 dpll 算法的性能

arrays - 在不使用多个数据结构的情况下,O(n) 时间内数组一侧的负数

c - 避免丢失集群上运行的作业的数据

c - 如何使用 GTK 将 RGB 转换为十六进制?

c - 帮助在 C 中实现最小二乘算法 [是 : want to find the square root of an array]

algorithm - LP建模题...好久没上学了

c - 实现特征结构 : what data type to use?

java - 邻接表图的实现 : Do incidence of vertices require separate objects?

C 运算符和评估