Union and Intersection of Arrays
Let us suppose we have two sorted Arrays
int Arr1[]={1, 3, 4, 5, 7};
int Arr2[]={2, 3, 5, 6};
then UNION will be: {1, 2, 3, 4, 5, 6, 7}
INTERSECTION : {3, 5}
C++ Program for UNION of arrays:
#include<iostream>
#include<stdio.h>
using namespace std;
/* Function prints union of arr1[] and arr2[]
m is the number of elements in arr1[]
n is the number of elements in arr2[] */
int printUnion(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
cout<<arr1[i++];
else if(arr2[j] < arr1[i])
cout<<arr2[j++];
else
{
cout<<arr2[j++];
i++;
}
}
/* Print remaining elements of the larger array */
while(i < m)
cout<<arr1[i++];
while(j < n)
cout<<arr2[j++];
}
/* Driver program to test above function */
int main()
{
int arr1[] = {1, 2, 4, 5, 6};
int arr2[] = {2, 3, 5, 7};
int m = sizeof(arr1)/sizeof(arr1[0]);
int n = sizeof(arr2)/sizeof(arr2[0]);
printUnion(arr1, arr2, m, n);
getchar();
return 0;
}
OUTPUT:
C++ Program for INTERSECTION of arrays:
#include<iostream>
#include<stdio.h>
using namespace std;
/* Function prints Intersection of arr1[] and arr2[]
m is the number of elements in arr1[]
n is the number of elements in arr2[] */
int printIntersection(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
i++;
else if(arr2[j] < arr1[i])
j++;
else /* if arr1[i] == arr2[j] */
{
cout<<arr2[j++];
i++;
}
}
}
int main()
{
int arr1[] = {1, 2, 4, 5, 6};
int arr2[] = {2, 3, 5, 7};
int m = sizeof(arr1)/sizeof(arr1[0]);
int n = sizeof(arr2)/sizeof(arr2[0]);
printIntersection(arr1, arr2, m, n);
getchar();
return 0;
}

