C++程序:查找两个未排序数组的并集和交集


在本文中,我们将讨论一个查找两个给定未排序数组的并集和交集的程序。

让我们用‘A’和‘B’表示这两个数组。这两个数组的并集用A ∪ B表示,它基本上是两个给定数组中所有元素的数组;前提是每个元素只出现一次。

为了找到它,我们将创建一个单独的数组并将第一个数组中的所有元素复制到该数组中。然后,我们将遍历第二个数组的元素,并检查它是否已存在于并集数组中。如果不存在,则将其添加到并集数组中。

类似地,两个数组的交集用A ∩ B表示。它是一个包含存在于两个给定数组中的元素的数组。

为此,我们将逐个遍历第一个数组的元素。同时,我们将检查该元素是否存在于第二个数组中。如果该元素同时存在于两个数组中,则将其添加到交集数组中。

示例

在线演示

#include <iostream>
using namespace std;
int main() {
   int len1 = 4, len2 = 3, flag1 = 0, flag2 = 0;
   int array1[len1] = {1,2,3,4}, array2[len2] = {5,3,4};
   int uni[len1+len2] = {1,2,3,4}, inter[len1];
   for(int k = 0; k < len2 ; k++) {
      flag1 = len1;
      for(int m = 0; m < len1; m++) {
         //eliminating common elements among the given arrays
         if(array2[k] == uni[m])
            break;
         else if(m == len1-1) {
            uni[flag1] = array2[k];
            flag1 = flag1+1;
         }
      }
   }
   for(int q = 0; q < len1; q++) {
      for(int w = 0; w < len2; w++) {
         //checking if both arrays contain a particular element
         if(array1[q] == array2[w]) {
            inter[flag2] = array1[q];
            flag2 = flag2+1;
            break;
         }
      }
   }
   cout << "Union :" <<endl;
   for(int u = 0; u < flag1; u++) {
      cout << uni[u] << " ";
   }
   cout << "\nIntersection :" <<endl;
   for(int i = 0; i < flag2; i++) {
      cout << inter[i] << " ";
   }
   return 0;
}

输出

Union :
1 2 3 4
Intersection :
3 4

更新于:2019年10月3日

2K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告