//Merge two arrays.
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void create(int **t,int e);
void display(int *t,int e);
void sort(int *t,int e);
int merge(int **c,int *a,int *b,int m,int n);
main()
{
int *a,*b,*c,m,n,p;
printf("\n Enter the number of elements in 1st matrix: ");
scanf("%d",&m);
create(&a,m);
printf("\n Enter the number of elements in 2nd matrix: ");
scanf("%d",&n);
create(&b,n);
printf("\n1st matrix\n");
display(a,m);
printf("\n2nd matrix\n");
display(b,n);
sort(a,m);
sort(b,n);
p=merge(&c,a,b,m,n);
printf("\n1st matrix\n");
display(a,m);
printf("\n2nd matrix\n");
display(b,n);
printf("\n merged matrix\n");
display(c,p);
getch();
}
void create(int **te,int e)
{
int *t,i;
t=(int*)malloc(e*sizeof(int));
printf("\nEnter the elements of matrix\n");
for(i=0;i<e;i++)
scanf("%d",&t[i]);
*te=t;
}
void display(int *t,int e)
{
int i;
for(i=0;i<e;i++)
printf("%d ",t[i]);
}
void sort(int *t,int e)
{
int i,j,temp;
for(i=0;i<e-1;i++)
{
for(j=0;j<e-1-i;j++)
{
if(t[j]>t[j+1])
{
temp=t[j];
t[j]=t[j+1];
t[j+1]=temp;
}
}
}
}
int merge(int **c,int *a,int *b,int m,int n)
{
int *t,l,i=0,j=0,k=0;
l=m+n;
t=(int*)malloc(l*sizeof(int));
while(i<m&&j<n)
{
if(a[i]<b[j])
{
t[k]=a[i];
i++;
}
else
{
t[k]=b[j];
j++;
}
k++;
}
if(i==m)
{
while(j<n)
{
t[k]=b[j];
j++;
k++;
}
}
else if(j==n)
{
while(i<m)
{
t[k]=a[i];
k++;
i++;
}
}
*c=t;
return l;
}

#include<stdio.h>
#include<conio.h>
void create(int **t,int e);
void display(int *t,int e);
void sort(int *t,int e);
int merge(int **c,int *a,int *b,int m,int n);
main()
{
int *a,*b,*c,m,n,p;
printf("\n Enter the number of elements in 1st matrix: ");
scanf("%d",&m);
create(&a,m);
printf("\n Enter the number of elements in 2nd matrix: ");
scanf("%d",&n);
create(&b,n);
printf("\n1st matrix\n");
display(a,m);
printf("\n2nd matrix\n");
display(b,n);
sort(a,m);
sort(b,n);
p=merge(&c,a,b,m,n);
printf("\n1st matrix\n");
display(a,m);
printf("\n2nd matrix\n");
display(b,n);
printf("\n merged matrix\n");
display(c,p);
getch();
}
void create(int **te,int e)
{
int *t,i;
t=(int*)malloc(e*sizeof(int));
printf("\nEnter the elements of matrix\n");
for(i=0;i<e;i++)
scanf("%d",&t[i]);
*te=t;
}
void display(int *t,int e)
{
int i;
for(i=0;i<e;i++)
printf("%d ",t[i]);
}
void sort(int *t,int e)
{
int i,j,temp;
for(i=0;i<e-1;i++)
{
for(j=0;j<e-1-i;j++)
{
if(t[j]>t[j+1])
{
temp=t[j];
t[j]=t[j+1];
t[j+1]=temp;
}
}
}
}
int merge(int **c,int *a,int *b,int m,int n)
{
int *t,l,i=0,j=0,k=0;
l=m+n;
t=(int*)malloc(l*sizeof(int));
while(i<m&&j<n)
{
if(a[i]<b[j])
{
t[k]=a[i];
i++;
}
else
{
t[k]=b[j];
j++;
}
k++;
}
if(i==m)
{
while(j<n)
{
t[k]=b[j];
j++;
k++;
}
}
else if(j==n)
{
while(i<m)
{
t[k]=a[i];
k++;
i++;
}
}
*c=t;
return l;
}