Tuesday, October 16, 2012

Merge Sort program in c in a simple way:




/*Merge Sort program in c in a simple way*/

#include<stdio.h>
#include<conio.h>
#include<math.h>
void merge(int a[],int p,int q,int r);
void mergesort(int a[],int p,int r)
{
int q;
if(p<r)
{
  q=floor((p+r)/2);
  mergesort(a,p,q);
  mergesort(a,q+1,r);
  merge(a,p,q,r);
  }
}
int b[5];
void merge(int a[],int p,int q,int r)
{
int i,j,k;
k=0;
i=p;
j=q+1;

while(i<=q && j<=r)
{
if(a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
}
while(i<=q)
b[k++]=a[i++];
while(j<=r)
b[k++]=a[j++];

for(i=r;i>=p;i--)
{
a[i]=b[--k];
}
}
void main()
{
int a[]={12,17,8,6,2};
int i;
clrscr();
mergesort(a,0,5);
for(i=1;i<=5;i++)
{
printf("%d\t",a[i]);
}
getch();
}

No comments: