Merge sort

Program to implement Merge sorting with Time complexity

#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
void merge(int b[],int c[],int a[],int p,int q)
{
int i=0,j=0,k=0;
while(i<p&&j<q)
{
if(b[i]<=c[j])
{
a[k]=b[i];
i=i+1;
k=k+1;
}
else
{
a[k]=c[j];
j=j+1;
k=k+1;
}
}

if(i==p)
{
while(j<q)
a[k++]=c[j++];
}
else
{
while(i<p)
a[k++]=b[i++];
}
}
void mergesort(int a[],int n)
{
int b[2000],c[2000],i=0,j=0,k=0;
if(n>1)
{

while(i<n/2)
b[j++]=a[i++];
while(i<n)
c[k++]=a[i++];
mergesort(b,j);
mergesort(c,k);
merge(b,c,a,j,k);
}
}

void main()
{
int n,i,a[2000];
clock_t t1,t2;
clrscr();
printf("Enter the array size\n");
scanf("%d",&n);
printf("Enter the array elements\n");
for(i=0;i<n;i++)
{
//scanf("%d",&a[i]);
a[i]=rand()%1000;
}
printf("\nArray is\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
t1=clock();
for(i=0;i<10000;i++)
mergesort(a,n);
t2=clock();
printf("\nThe sorted array is\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\nTime complexity is %fms",(t2-t1)*1000/(CLK_TCK*10000));
getch();
}



Category:

0 comments: