| 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]); |
|