如何在O(n)时间和O(1)空间中合并相同数组的两个排序部分

时间:2010-07-22 17:59:25

标签: algorithm data-structures

  

可能重复:
  How to sort in-place using the merge sort algorithm?
  Regarding in-place merge in an array

给定array大小N,它被分为两组排序整数(0 to PP+1 to N-1)。如何使用常量额外空间(O(1))和O(n)时间对此数组进行排序。例如

A = {1,3,5,7,2,4,6,8},这里N = 8,P = 3和 从0到3的元素被排序,从4到7的元素被排序。

期望的O / P:A = {1,2,3,4,5,6,7,8}

2 个答案:

答案 0 :(得分:0)

您的输入数组不需要排序。你只需写出数字0..N-1(或1..N你的例子有点令人困惑)。我想你一定是误解了你的问题。

答案 1 :(得分:0)

如果我理解正确,您可以分配一个新数组来保存结果。所以你正在做的是合并两个排序列表。一个简单的双向合并很好地做到了。