Skip to content

Commit 0563ba3

Browse files
authored
Merge pull request larissalages#18 from gokulkannan7/master
mergesort algorithm in c++
2 parents bd01767 + 303602b commit 0563ba3

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

classical_algorithms/mergesort.cpp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
void merge(int a[], int l, int m, int r)
2+
{
3+
int l1 = m - l + 1;
4+
int l2 = r - m;
5+
6+
int temp1[l1];
7+
int temp2[l2];
8+
9+
for (int i = 0; i < l1; i++)
10+
{
11+
temp1[i] = a[l + i];
12+
}
13+
for (int j = 0; j < l2; j++)
14+
{
15+
temp2[j] = a[m + j + 1];
16+
}
17+
int i = 0;
18+
int j = 0;
19+
int k = l;
20+
21+
while (i < l1 && j < l2)
22+
{
23+
if (temp1[i] < temp2[j])
24+
{
25+
a[k] = temp1[i];
26+
i++;
27+
}
28+
29+
else
30+
{
31+
a[k] = temp2[j];
32+
j++;
33+
}
34+
35+
while (i < l1)
36+
{
37+
a[k] = temp1[i];
38+
i++;
39+
k++;
40+
}
41+
42+
while (j < l2)
43+
{
44+
a[k] = temp2[j];
45+
j++;
46+
k++;
47+
}
48+
}
49+
}
50+
51+
void mergesort(int a[], int l, int r)
52+
{
53+
if (l < r)
54+
{
55+
int m = r + (l - r) / 2;
56+
57+
mergesort(a, l, m);
58+
mergesort(a, m + 1, r);
59+
60+
merge(a, l, m, r);
61+
}
62+
}

0 commit comments

Comments
 (0)