1.

Given are two one dimensional arrays A and B which are stored in ascending order. Write a program to merge them into a single sorted array C that contains every element of A and B in ascending order. 

Answer»

A program to merge two arrays into single sorted array that contains every element of arrays into a ascending order:

#include<studio.h>

#include<conio.h>

void sort(int*,int);

void merge(int*,int*,int,int);

void main()

{

int a[10],b[10];

int i,j,m,n;

clrscr();

printf("how many numbers u want to enter in 1st array : ");

 scanf("%d",&n);

printf("enter numbers in ascending order :\n");

for(i=0;i<n;i++)

 scanf("%d",&a[i]);

printf("how many numbers u want to enter in 2nd array : ");

 scanf("%d",&m);

printf("enter numbers in ascending order :\n");

for(i=0;i<m;i++)

 scanf("%d",&b[i]);

merge(a,b,n,m);

 getch();

}

void merge(int *a,int *b,int n,int m)

{

int i=0,c[20],j=0,k=0,count=0;

while(i<=n&&j<=m)

{

 if(a[i]<b[j])

 {

 c[k]=a[i];

 i++;

 k++;

 }

 if(a[i]>b[j])

 {

 c[k]=b[j];

 j++;

 k++;

 }

 if(a[i]==b[j])

 {

 c[k]=a[i];

 k++;

 i++;

 j++;

 count++;

 }

}

if(i<=n&&j==m)

{

 while(i<=n)

 {

 c[k]=a[i];

 i++;

 k++;

 }

 }

if(i==n&&j<=m)

{

 while(j<=m)

 {

 c[k]=b[j];

 i++;

 j++;

 }

 }

 for(i=0;i<m+n-count;i++)

 printf("%d\t",c[i]); 



Discussion

No Comment Found

Related InterviewSolutions