Big o 哪个更大:O(n*logn)还是O(1)?

Big o 哪个更大:O(n*logn)还是O(1)?,big-o,Big O,我们在我的算法课上复习了主定理,对于一个问题,我试图比较nlogn和1,找出它属于MT的哪种情况。但我很难确定哪个更大 编辑:用于解决重复问题。方程为T(n)=2T(n/4)+n*LogN。如果有帮助,就把这个扔进去。这样想: O(N*LogN)将随着N的增加而增加,这样对于任何X,无论多大,都可以找到N的值,使得N*LogN大于X O(1)将保持不变,无论N是什么 这意味着O(1)渐进地更好,即对于N的某些(可能非常高)值,O(N*LogN)将变得更慢。如果算法是O(NlogN),这意味着

我们在我的算法课上复习了主定理,对于一个问题,我试图比较nlogn和1,找出它属于MT的哪种情况。但我很难确定哪个更大


编辑:用于解决重复问题。方程为T(n)=2T(n/4)+n*LogN。如果有帮助,就把这个扔进去。

这样想:

  • O(N*LogN)
    将随着
    N
    的增加而增加,这样对于任何
    X
    ,无论多大,都可以找到
    N
    的值,使得
    N*LogN
    大于
    X
  • O(1)
    将保持不变,无论
    N
    是什么
这意味着
O(1)
渐进地更好,即对于
N
的某些(可能非常高)值,
O(N*LogN)
将变得更慢。

如果算法是O(NlogN),这意味着存在一个数字a和一个执行时间量B,对于任何大于a的输入大小N,执行时间将小于NlogN的B倍

如果一个算法是O(1),那就意味着存在一个固定的时间C,在这个时间C中,无论输入大小如何,算法都可以保证完成

在比较两种算法时,其中一种是O(NlgN),另一种是O(1),通常会发现,对于足够大的N值,O(1)算法更快,但在许多情况下,对于较小的N值,O(NlgN)算法可能更快


事实上,虽然O(N^3)或O(N^4)算法通常看起来很糟糕,但如果N通常是一个小数字(例如1-5左右),并且永远不会变大(即使偶尔值为50也可能严重影响性能),则即使是O(N^4)算法也可能优于O(1)算法。

O(1)意味着恒定的执行时间。nlog(n)是可变的执行时间。应该很明显哪个“更大”,哪个时间提示:当n增加时,O(1)增长吗?O(nlogn)是否随着n的增加而增加?因此,我从中得出O(1)更好,但O(n*LogN)更大,因为它会随着n的增加而增加?@MikeGordon The,但在你的句子中没有真正的意义。这里越大越好。@MikeGordon当你比较使用“大O”符号的算法时,越大总是意味着“越差”(速度越慢,占用的内存越多,占用的资源越多,等等)
O(1)
是任何算法所能达到的最佳效果——它相当于“只知道答案”。所以说N*LogN=O(1)安全吗?@MikeGordon不,一点也不!这些是非常不同的算法类。