File tree 1 file changed +44
-0
lines changed
1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+
5
+ class MergeSort {
6
+ private:
7
+ vector<int > nums;
8
+ vector<int > aux;
9
+
10
+ void merge (int left, int mid, int right) {
11
+ for (int i = left; i <= right; i++)
12
+ aux[i] = nums[i];
13
+
14
+ int i = left, j = mid + 1 , k = left;
15
+
16
+ while (i <= mid && j <= right) {
17
+ if (aux[i] <= aux[j])
18
+ nums[k++] = aux[i++];
19
+ else
20
+ nums[k++] = aux[j++];
21
+ }
22
+
23
+ while (i <= mid)
24
+ nums[k++] = aux[i++];
25
+
26
+ while (j <= right)
27
+ nums[k++] = aux[j++];
28
+ }
29
+
30
+ public:
31
+ MergeSort (const vector<int > &nums) : nums(nums) { aux.resize (nums.size ()); }
32
+
33
+ void mergeSort (int left, int right) {
34
+ if (left >= right)
35
+ return ;
36
+
37
+ int mid = left + ((right - left) >> 1 );
38
+
39
+ mergeSort (left, mid);
40
+ mergeSort (mid + 1 , right);
41
+
42
+ merge (left, mid, right);
43
+ }
44
+ };
You can’t perform that action at this time.
0 commit comments