比较2个数组

时间:2017-06-27 18:42:46

标签: arrays compare

我有2个阵列a& b,长度相同n。

我想将a的每个元素与b的每个元素进行比较。 2个数组未排序。如何使用复杂度小于O(n ^ 2)的算法实现我的目标?像O(n)或O(nlogn)?

最终目标是从这些数组中找到一对数字,使它们的差异就是数组的长度。

3 个答案:

答案 0 :(得分:1)

我认为这可以满足您的需求,并且与您的排序算法一样高效:

  1. 创建临时数组a1,a2,其中包含a减去元素和加上数组长度n的元素。
  2. 连接a1a2并对结果进行排序,以获取a'
  3. 排序b以获取b'
  4. 启动计数器i=0, j=0
  5. a'[i]!=b'[j]时:
    1. i<n and a'[i]<b'[j]i++
    2. 如果i==n:返回&#34;未找到!&#34;
    3. j<n and b'[j]<a'[i]j++
    4. 如果j==n:返回&#34;未找到!&#34;
  6. 返回&#34;找到了!&#34;

答案 1 :(得分:0)

如果两个数组的大小相同,则启动循环并迭代两个数组的索引并使用比较运算符进行比较。

答案 2 :(得分:0)

您可以在合并排序O(nlogn)中使用,然后比较末尾的数组 2O(nlogn)+ O(n)