Skip to content

Commit cb6c0fd

Browse files
authored
Create mergesort.c
1 parent 6025915 commit cb6c0fd

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

mergesort.c

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include<stdio.h>
2+
#include<stdlib.h>
3+
4+
5+
void merge(int A[], int l, int mid, int h){
6+
int B[100],i,j,k;
7+
i = l;
8+
j = mid+1;
9+
k = i;
10+
while(i<=mid && j<=h)
11+
{
12+
if(A[i]<A[j])
13+
{
14+
B[k++] = A[i++];
15+
}
16+
else{
17+
B[k++] = A[j++];
18+
}
19+
}
20+
for(;i<=mid;i++)
21+
{
22+
B[k++] = A[i];
23+
}
24+
for(;j<=h;j++)
25+
{
26+
B[k++] = A[j];
27+
}
28+
for(int i=l;i<=h;i++)
29+
{
30+
A[i] = B[i];
31+
}
32+
}
33+
34+
void IMergeSort(int A[], int n)
35+
{
36+
int p,l,h,mid,i;
37+
for(p=2;p<=n;p=p*2)
38+
{
39+
for(i=0;i+p-1<n;i=i+p)
40+
{
41+
l=i;
42+
h=i+p-1;
43+
mid=(l+h)/2;
44+
merge(A,l,mid,h);
45+
}
46+
}
47+
if(p/2<n)
48+
{
49+
merge(A,0,p/2-1,n-1);
50+
}
51+
}
52+
53+
54+
55+
int main()
56+
{
57+
int A[10] = {1,5,2,1,6,3,6,2,5,10};
58+
int i;
59+
IMergeSort(A,10);
60+
for(i=0;i<10;i++)
61+
{
62+
printf("%d ",A[i]);
63+
}
64+
return 0;
65+
}

0 commit comments

Comments
 (0)