C program to print union of two arrays

C program to print union of two arrays


Output:

Enter the size of array A:

5
Enter the elements of array A:
1 2 5 8 9
Enter the size of array B:
5
Enter the elements of array B:
2 4 6 8 10
The union of two arrays is:
1 2 4 5 6 8 9 10

Implementation:


#include <stdio.h>
#include <stdlib.h>
#define MAX 100000

void swap(int *x,int *y)
{
 int temp;
 temp=*x;
 *x=*y;
 *y=temp;
}

int main(void) {
 int *A,*B,Asize,Bsize;
 int i,j,k;
 int hash[MAX];
 printf("Enter the size of array A:\n");
 scanf("%d",&Asize);
 
 A=(int*)malloc(sizeof(int)*Asize);
 memset(hash,0,sizeof(hash));
 
 printf("Enter the elements of array A:\n");
 for(i=0;i<Asize;i++)
 {
  scanf("%d",(A+i));
  hash[*(A+i)]=1;
 }
 
 printf("Enter the size of array B:\n");
 scanf("%d",&Bsize);
 
 B=(int*)malloc(sizeof(int)*Bsize);
 
 printf("Enter the elements of array B:\n");
 for(i=0;i<Bsize;i++)
 {
  scanf("%d",(B+i));
 }
 k=1;
 A=realloc(A,(Asize+Bsize));
 for(i=0;i<Bsize;i++)
 {
  if(hash[*(B+i)]==0)
  {
   A[Asize+k-1]=*(B+i);
   k++;
  }
 }
 
 /* sort the union array */
 for(i=0;i<(Asize+k-1)-1;i++)
 {
  for(j=i+1;j<(Asize+k-1);j++)
  {
   if(*(A+i)>*(A+j))
   {
    swap((A+i),(A+j));
   }
  }
 }
 printf("The union of two arrays is:\n");
 for(i=0;i<(Asize+k-1);i++)
 {
  printf("%d ",*(A+i));
 }
 return 0;
}