#include<stdio.
h>
#include<conio.h>
void main()
{
int a[20],n,i;
void mergesort(int[],int,int);
clrscr();
printf("\nEnter n:");
scanf("%d",&n);
printf("\nEnter %d elements",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\nBefore sorting:");
for(i=0;i<n;i++)
printf("%4d",a[i]);
mergesort(a,0,n-1);
printf("\nAfter sorting:");
for(i=0;i<n;i++)
printf("%4d",a[i]);
getch();
}
void mergesort(int a[],int low,int high)
{
int mid;
void merge(int[],int,int,int);
if(low<high)
{
mid=(low+high)/2;
mergsort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}
}
void merge(int a[],int low,int mid,int high)
{
int i,j,k,c[20];
i=low;
j=mid+1;
for(k=low;i<=mid && j<=high;k++)
{
if(a[i]<a[j])
c[k]=a[i++];
else
c[k]=a[j++];
}
while(i<=mid)
c[k++]=a[i++];
while(j<=high)
c[k++]=a[j++];
for(i=low;i<=high;i++)
a[i]=c[i];
}