Monday, April 20, 2009

mergesort

void merge(int a[], int low, int high, int mid);
void mergesort(int a[], int low, int high)
{
int mid;

if(low < mid)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
}
void merge(int a[], int low, int high, int mid)
{
int i, j, k, c[10];
i=low;
j=mid+1;
k=low;
while((i<=mid)&&(j<=high))
{
if(a[i] < a[j] )
{
c[k]=a[i];
k++;
i++;
}
else
{
c[k]=a[j];
k++;
j++;
}
}
while(i<=mid)
{
c[k]=a[i];
k++;
i++;
}
while(j<=high)
{
c[k]=a[j];
k++;
j++;
}
for(i=low; i < k ; i++)
{
a[i]=c[i];
}
}
void main()
{
int a[10],i,n;
printf("\n Enter no of elements ");
scanf("%d",&n);
printf("\n Enter Elements ");
for(i=0;i < n;i++)
{
scanf("%d",&a[i]);
}
mergesort(a,0,n-1);
printf("\n Elements After Sort ");
for(i=0;i < n;i++)
{
printf("\t %d",a[i]);
}
}

No comments:

Post a Comment