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

以上是 C ++程序查找两个未排序数组的并集和交集 的全部内容, 来源链接: utcz.com/z/341240.html

回到顶部