Skip to content

Commit 51cda8f

Browse files
Create merge_sort.cpp
1 parent bd7e785 commit 51cda8f

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

merge_sort.cpp

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include<bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
6+
void merge(vector<int> &arr, int l, int m, int r) {
7+
8+
int nl = m-l+1;
9+
int nr = r-m;
10+
vector<int> larr(nl);
11+
vector<int> rarr(nr);
12+
for(int i=0; i<nl; i++) larr[i] = arr[l+i];
13+
for(int j=0; j<nr; j++) rarr[j] = arr[m+1+j];
14+
int i=0, j=0, k=l;
15+
while(i < nl && j < nr) {
16+
if(larr[i] <= rarr[j]) {
17+
arr[k] = larr[i];
18+
i++;
19+
}else{
20+
arr[k] = rarr[j];
21+
j++;
22+
}
23+
k++;
24+
}
25+
while(i<nl) {
26+
arr[k] = larr[i];
27+
i++; k++;
28+
}
29+
while(j<nr) {
30+
arr[k] = rarr[j];
31+
j++; k++;
32+
}
33+
}
34+
35+
void mergeSort(vector<int> &arr, int l, int r) {
36+
int m;
37+
if(l < r) {
38+
int m = l+(r-l)/2;
39+
mergeSort(arr, l, m);
40+
mergeSort(arr, m+1, r);
41+
merge(arr, l, m, r);
42+
}
43+
}
44+
45+
int main() {
46+
vector<int> arr = {-10, 9, 0, 3, 4, -7};
47+
mergeSort(arr, 0, 5);
48+
for(int i:arr) {
49+
cout << i << " ";
50+
}
51+
cout << endl;
52+
}

0 commit comments

Comments
 (0)