Big o 哪个更大:O(n*logn)还是O(1)?
我们在我的算法课上复习了主定理,对于一个问题,我试图比较nlogn和1,找出它属于MT的哪种情况。但我很难确定哪个更大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),这意味着
编辑:用于解决重复问题。方程为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不,一点也不!这些是非常不同的算法类。