Arrays 用O(1)个额外空间合并两个已排序数组

Arrays 用O(1)个额外空间合并两个已排序数组,arrays,algorithm,merge,time-complexity,Arrays,Algorithm,Merge,Time Complexity,如果允许使用临时数组的额外空间,则在合并2个排序数组时会得到O(m+n)。因此,所有元素都合并到一个临时数组中 但是,如果只允许使用O(1)额外空间,如何执行合并?是的,可以使用O(1)额外空间合并两个排序数组 我们可以通过使用插入排序来实现这一点。 但是使用O(1)额外空间合并两个排序数组的时间复杂度将是O(n^2)。 如果我们允许使用O(n)额外空间,那么我们可以使用时间复杂度仅为O(nlogn)的合并排序。您不需要哈希表来合并已排序的数组,而空间只需要用于生成的数组。合并的内容,即m+n元

如果允许使用临时数组的额外空间,则在合并2个排序数组时会得到
O(m+n)
。因此,所有元素都合并到一个临时数组中


但是,如果只允许使用
O(1)
额外空间,如何执行合并?

是的,可以使用O(1)额外空间合并两个排序数组

我们可以通过使用插入排序来实现这一点。

但是使用O(1)额外空间合并两个排序数组的时间复杂度将是O(n^2)。


如果我们允许使用O(n)额外空间,那么我们可以使用时间复杂度仅为O(nlogn)的合并排序

您不需要哈希表来合并已排序的数组,而空间只需要用于生成的数组。合并的内容,即m+n元素,应该放在哪里,是否保留?它们可以保留在任何阵列中,以便更具体地分配内存。您得到的是两个数组还是一个带有m+n项的数组。您的O表示法完全是为了时间复杂度?现有的合并算法存在,但简单的合并算法会显示出明显更糟糕的行为,其他的合并算法太复杂而无法实现。O(n2)是什么?是O(n^2)吗?