#include<stdio.h>
#include<stdlib.h>
int *a;
void m_sort(int,int);
void sort(int,int,int);
main()
{
int n,i;
printf("Enter the number of elements (it should be power of 2) ");
scanf("%d",&n);
a=(int *)calloc(n,sizeof(int));
printf("Enter the values ");
for(i=0;i<n;i++)
scanf("%d",a+i);
m_sort(0,n-1);
printf("The sorted array is \n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
return;
}
void m_sort(int i,int j)
{
int mid;
if(j-i==0)
return;
else
{
mid=(i+j)/2;
m_sort(i,mid);
m_sort(mid+1,j);
sort(i,mid,j);
return;
}
}
void sort(int i,int mid,int j)
{
int *b,k,n,m;
n=i;
m=mid+1;
b=(int *)calloc((j+1),sizeof(int));
for(k=0;k<=j;k++)
{
if(n<=mid&&m<=j)
{
if(a[n]<a[m])
b[k]=a[n++];
else
b[k]=a[m++];
}
else if(n>mid)
b[k]=a[m++];
else
b[k]=a[n++];
}
for(k=0;k<=j;k++)
a[i++]=b[k];
return;
}
Wednesday, 18 September 2013
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment