将嵌套循环转换为并行代码

时间:2017-04-22 14:49:28

标签: algorithm

在过去的几周里,我一直在编写各种程序,我必须使用嵌套的for循环。这将我的代码的复杂性提高到O(n ^ 2)。有没有办法可以使用并行算法来降低这种复杂性。我读了一些关于前缀和算法的内容,但没有足够的解释。例如,下面给出了代码。 请帮忙吗?

for(i=0;i<n;i++)
{
  for(j=0;j<m;j++)
  {
    if(array1[i]==array2[j];
    System.out.println(array1[i]);
  }
}

1 个答案:

答案 0 :(得分:0)

此代码正在执行的操作不需要嵌套循环,可以使用以下两种方法之一在O(n)或O(nlogn)中完成:

  1. 填充一个数组的集合(基于树/散列表),然后迭代第二个数组,并为每个元素检查它是否存在于集合中(注意:此解决方案不处理重复,对于重复,使用多重集合或映射,其中键是第一个数组中的元素,值是出现的数量。)
  2. 对数组进行排序,并将它们一起迭代。对数组进行排序后 - 查找输出可以在线性时间内完成。