Skip to content

Commit d299c78

Browse files
authored
Merge Sort Program with Complexity Analysis
1 parent 65669b3 commit d299c78

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

Merge Sort/MergeSort.c

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
int count;
4+
void mergesort(int[], int, int);
5+
void merge(int[], int, int, int);
6+
int main()
7+
{
8+
int a[1200],b[1200],c[1200],c1,c2,c3,i,j,n;
9+
printf("Enter the number of elements: ");
10+
scanf("%d",&n);
11+
printf("Enter the elements: ");
12+
for(i = 0; i < n; i++)
13+
scanf("%d",&a[i]);
14+
mergesort(a,0,n-1);
15+
printf("Sorted Array:");
16+
for(i=0;i<n;i++)
17+
printf("%d ",a[i]);
18+
printf("\nTime Complexity Analysis: \n");
19+
printf("SIZE\tASCENDING\tDESCENDING\tRANDOM\n");
20+
for(i=16;i<=1024;i*=2)
21+
{
22+
for(j=0;j<i;j++)
23+
{
24+
a[j]=j;
25+
b[j]=i-j;
26+
c[j]=rand()%(i+1);
27+
}
28+
count = 0;
29+
mergesort(a,0,i-1);
30+
c1=count;
31+
count=0;
32+
mergesort(b,0,i-1);
33+
c2=count;
34+
count=0;
35+
mergesort(c,0,i-1);
36+
c3=count;
37+
printf("%d\t%d\t\t%d\t\t%d\n",i,c1,c2,c3);
38+
}
39+
return 0;
40+
}
41+
42+
void mergesort(int a[], int low, int high)
43+
{
44+
int mid;
45+
if(low<high)
46+
{
47+
mid=(low+high)/2;
48+
mergesort(a,low,mid);
49+
mergesort(a,mid+1,high);
50+
merge(a,low,mid,high);
51+
}
52+
}
53+
54+
void merge(int a[], int low, int mid, int high)
55+
{
56+
int b[1200],i=low,j=mid+1,k=low;
57+
while(i<=mid && j<=high)
58+
{
59+
if(a[i]<a[j])
60+
b[k++]=a[i++];
61+
else
62+
b[k++]=a[j++];
63+
count++;
64+
}
65+
while(i<=mid)
66+
{
67+
b[k++]=a[i++];
68+
count++;
69+
}
70+
while(j<=high)
71+
{
72+
b[k++]=a[j++];
73+
count++;
74+
}
75+
for(k=low;k<=high;k++)
76+
a[k]=b[k];
77+
}

0 commit comments

Comments
 (0)