Snape的“针对向导的不友好算法”教科书声称合并的运行时间 sort是O(n ^ 4)。这个说法是否正确?
解决方案:是的。这种说法在技术上是正确的,因为O(n ^ 4)只给出一个上限
绑定算法需要多长时间。然而,这是一个令人讨厌的无益答案,
因为紧束是Θ(n log n).
我不太了解解决方案的内容。 O(n ^ 4)如何正确?
答案 0 :(得分:5)
Big O表示法是算法运行时最坏情况下的上限。
由于O(n ^ 4)高于mergesort的最坏情况时间,因此它在技术上是正确的,因为它确实提供了一个约束 - 即。 Mergesort的表现永远不会比O(n ^ 4)差。
然而,它没有用,因为运行时间的更好表达是O(n log n),这是合并排序的“最紧密”界限
答案 1 :(得分:1)
Big-O是一个集合,包括运行速度与(foo)或更快的所有内容。 Little-O是一组比(foo)运行得更快的东西。虽然说mergesort是O(n ^ 4)是正确的,但它不是很有用,因为它是Theta(n log n)。说mergesort是o(n ^ 4)稍微有用,因为little-o表示法从不用于暗示big-theta运行时。
更复杂的是,当大-theta更合适时,通常会使用big-O,因为大多数键盘都没有theta。