Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么合并2个n大小的排序数组的时间复杂度为O(n)而不是Θ;(n) ??_Arrays_Algorithm_Merge_Time Complexity_Big O - Fatal编程技术网

Arrays 为什么合并2个n大小的排序数组的时间复杂度为O(n)而不是Θ;(n) ??

Arrays 为什么合并2个n大小的排序数组的时间复杂度为O(n)而不是Θ;(n) ??,arrays,algorithm,merge,time-complexity,big-o,Arrays,Algorithm,Merge,Time Complexity,Big O,我在很多地方看到,合并2个n大小的排序数组的时间复杂度是O(n)。Θ(n)在这里不是更准确吗 提前谢谢 证明Θ(f(x))比证明O(f(x))更困难,所以很多人都不费心。然而,在这种情况下,就地合并两个n大小的排序列表对于所有可能的输入是O(n),而不是Θ(n),这实际上是正确的 显然,复制合并两个n大小的列表不会比O(n)更好,因为正在复制2*n个元素。然而,就地合并可以在Ω(1)中实现,以实现最佳情况。当第一个列表中的所有元素都小于或等于第二个列表中的元素时,这是一种简单的情况。合并算法可以

我在很多地方看到,合并2个n大小的排序数组的时间复杂度是O(n)。Θ(n)在这里不是更准确吗

提前谢谢

证明Θ(f(x))比证明O(f(x))更困难,所以很多人都不费心。然而,在这种情况下,就地合并两个n大小的排序列表对于所有可能的输入是O(n),而不是Θ(n),这实际上是正确的

显然,复制合并两个n大小的列表不会比O(n)更好,因为正在复制2*n个元素。然而,就地合并可以在Ω(1)中实现,以实现最佳情况。当第一个列表中的所有元素都小于或等于第二个列表中的元素时,这是一种简单的情况。合并算法可以在O(1)中检测到这种情况,如果元素的顺序已经正确,则什么也不做,因此Ω(1)是最佳情况

结论:in-place合并不是Θ(n),而是Ω(1)。实际上,in-place与附加内存的合并可以是Ω(1)和O(n),但如果没有附加内存,则需要O(n logn)来合并两个n大小的列表,因此问题显然与此情况无关

这就是为什么说O(n)更简单,而不必担心就地复制合并的细节。而且,通常困扰程序员的是最坏的情况,而不是最好的情况

编辑1 在许多情况下,当人们说O(f(n))时,他们的意思是Θ(f(n))最坏情况的复杂性。在最坏的情况下,就地合并也是Θ(n),就像拷贝合并一样

编辑2 人们在谈论复杂性时通常会提到所有可能的跑步。如果最坏的情况是Θ(f(x)),而最好的情况是Θ(g(x)),那么从技术上讲,O(f(x))和Ω(g(x))对于所有可能的情况都是紧的


类似地,如果复制一个数组是Θ(n),那么说它是O(2n)是没有意义的。这在技术上是正确的,但大O符号的用法非常罕见。

没错,但这两种符号通常用于表示相同的东西,尽管它们不同<代码>Θ(f(n))总是比
O(f(n))
更准确。顺便说一句(请参见)这一点的可能重复是正确的,但我们仍然可以说就地合并的最坏情况复杂性是Θ(n)。@ruakh:显然,例如,如果没有元素位于其最终位置。@YvesDaoust:你说“显然”,但我认为这个答案忽略了它。(因此我的评论。)@ruakh我也认为这是显而易见的。在最坏的情况下使用大θ符号是很少见的。实际上,如果有可能为最坏的情况建立大θ表达式,那么该表达式通常也用于大O。无论如何,我已经更新了答案,你似乎用欧米茄来表示最佳情况,用大O来表示最坏情况。但事实上,这些符号中的任何一个都可以指最佳、最差或平均情况。见: