Algorithm Mergesort运行时BigO

Algorithm Mergesort运行时BigO,algorithm,big-o,discrete-mathematics,mergesort,Algorithm,Big O,Discrete Mathematics,Mergesort,斯内普的“向导的不友好算法”教科书声称merge的运行时间 排序为O(n^4)。这个说法正确吗 解决方案:是的。这个说法在技术上是正确的,因为O(n^4)只给出一个上限 限制算法所需的时间。然而,这是一个令人讨厌的毫无帮助的回答, 因为紧边界是Θ(n log n)。 我不太明白解决方案是什么。O(n^4)怎么可能是正确的 大O表示法是算法运行时最坏情况的上界 由于O(n^4)高于mergesort的最坏情况时间,因此在技术上是正确的,因为它确实提供了一个界限-即mergesort的性能永远不会比

斯内普的“向导的不友好算法”教科书声称merge的运行时间 排序为O(n^4)。这个说法正确吗

解决方案:是的。这个说法在技术上是正确的,因为O(n^4)只给出一个上限 限制算法所需的时间。然而,这是一个令人讨厌的毫无帮助的回答, 因为紧边界是
Θ(n log n)。


我不太明白解决方案是什么。O(n^4)怎么可能是正确的

大O表示法是算法运行时最坏情况的上界

由于O(n^4)高于mergesort的最坏情况时间,因此在技术上是正确的,因为它确实提供了一个界限-即mergesort的性能永远不会比O(n^4)差


然而,这并没有什么帮助,因为更好的运行时间表达式是O(nlogn),这是合并排序的“最紧”界限,Big-O是一个集合,它包括运行速度与(foo)一样快或更快的所有内容。Little-O是一组运行速度严格高于(foo)的东西。虽然说mergesort是O(n^4)是正确的,但它不是很有用,因为它是θ(n logn)。说mergesort是o(n^4)稍微有用一点,因为little-o符号从未用于暗示大θ运行时


更复杂的是,当大θ更合适时,通常使用大-O,因为大多数键盘没有θ。

ah好的,我明白了。所以O(n^1000)在“技术上”也是正确的?是的,因为从mergesortYes中你永远不会得到比O(n^1000)更差的性能,O(n^1000)是另一个,更没有帮助的上限。好的,当我们讨论这个话题时,如果我们说mergesort是(x)的BigOmega,那么“英语”是怎么想的呢?比格西塔呢?BigTheta是否意味着它是函数的最大运行时间?BigOmega-它的运行速度不会超过这个。BigTheta-这是一个大O和大Omega的组合,没有“特殊”输入可以使它运行得更快或更慢。是的,它实际上只是一个(根深蒂固的,制度化的)CS习惯,写f(n)=O(n^2)或类似的东西——从一开始它就应该用集合成员符号而不是等号来写,但现在看来已经太迟了。