【发布时间】:2015-05-20 19:45:48
【问题描述】:
我有 2 个排序数组 A[]、B[]。我的要求是合并这两个排序的数组,结果数组也应该是排序的。由于有 2 个排序数组,我有 2 种方法来解决这个问题。一种是使用我可以排序的 MERGE SORT 方法,另一种我建议的方法是简单地加入这 2 个数组并通过快速排序方法对结果数组进行排序。
我的问题是以上两种方法,哪一种效率更高,运行时间更短,更稳定。请给我建议,如果有其他可用的解决方案,请告诉我。
【问题讨论】:
-
我认为在空间和时间复杂度方面,快速排序应该比归并排序更快。但是就地合并排序也是可能的。但是,当对数组使用归并排序时,可能需要 O(n) 辅助空间。快速排序的高效实现使用 O(log n) 空间。
-
所以最好的方法是简单地合并这两个数组,最后使用快速排序对结果数组进行排序,如果错了,请纠正我..
-
@rabishaw 呃...合并两个排序数组不应该是 O(n+m) 吗?同样对于空间复杂性(无论如何,您都必须分配一个新的全尺寸数组)?重新排序附加的数组怎么会比这更快?
-
@rabishaw 注意输入数组已经排序。
-
由于数组已经排序,您可以使用
std::merge。
标签: c++ c algorithm sorting data-structures