排序组合数组时将排序数组添加到重新分配的排序数组的最佳方法

时间:2016-04-22 16:49:58

标签: arrays algorithm sorting

我正试图找出解决这一特定问题的最佳解决方案。

以下是我要做的事情的简要说明:

  • 我有两个数组,A和B.
  • B先前已重新分配,以便为A中的元素腾出空间。
  • A始终是一个完全填充的数组。
  • B总是至少有一个元素。
  • A和B都已经排序。

我想在保持数组排序的同时将A的元素添加到B中。

例如:

//Given:
A = [1,3,5]
B = [2,4,6, , , ]

//Desired Result:
B = [1,2,3,4,5,6]

到目前为止,我想到的最快的方法是:

  • 将A的所有元素添加到B中,将采用O(n)。
  • 使用合并排序为O(nlogn)。
  • 对组合数组进行排序

我试图弄清楚有没有办法比O(nlogn)更快地做到这一点。

在这种情况下,空间复杂性不是问题。

1 个答案:

答案 0 :(得分:0)

您只需要mergesort的合并步骤。合并步骤采用两个排序的数组,并在O(n)时间内将它们组合成一个排序的数组。

您可以通过在A和B的尾部而不是头部开始合并来节省一些时间。这将允许您在为B分配的存储中执行合并,而不是需要合并到第三个数组,然后复制回B。