优化算法同步两个数组

时间:2010-08-30 20:08:36

标签: algorithm merge

我正在寻找一种有效的算法来同步两个数组。假设a1和a2是作为输入给出的两个数组。

a1 - C,C ++,Java,C#,Perl

a2 - C ++,Python,Java,Cw,Haskel

输出2个数组:

输出A1:C,C ++,Java

输出A2:Cw,Haskell,Python

输出A1:

1)两个阵列共有的项目 2)仅在A1中而不在A2中的项目

输出A2:

仅在a2中的项目

提前致谢。

拉​​吉

1 个答案:

答案 0 :(得分:7)

  1. 使用有效的排序算法对两个数组进行排序,复杂度为O(n.log(n))
  2. 最初构建输出数组为空
  3. 将已排序的A1的第一个元素a1与已排序的A2的第一个元素a2进行比较
    • Equal表示在两个数组中,将a1放入OutputA1
    • a1< a2表示a1仅在A1中,a1现在是排序A1中的下一个元素,将a1放入OutputA1
    • 其他a2< a1表示a2仅在A2中,a2现在是排序A2中的下一个元素,将a2放入OutputA2
  4. 执行此操作直到您处理排序数组中的所有元素,即O(n)的复杂性。