File tree 1 file changed +50
-0
lines changed
src/Algorithms/Divide & Conquer
1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ void merge (vector<int >& nums, int l, int m, int r)
4
+ {
5
+ int n1 = m - l + 1 ;
6
+ int n2 = r - m;
7
+ int A[n1], B[n2];
8
+
9
+ for (int i = 0 ; i < n1; i++)
10
+ A[i] = nums[l + i];
11
+
12
+ for (int i = 0 ; i < n2; i++)
13
+ B[i] = nums[m + 1 + i];
14
+
15
+ int i = 0 , j = 0 ;
16
+ int k = l;
17
+
18
+ while (i < n1 && j < n2)
19
+ {
20
+ if (A[i] <= B[j])
21
+ nums[k++] = A[i++];
22
+ else
23
+ nums[k++] = B[j++];
24
+ }
25
+
26
+ while (i < n1)
27
+ nums[k++] = A[i++];
28
+ while (j < n2)
29
+ nums[k++] = B[j++];
30
+ }
31
+
32
+ void mergeSort (vector<int >& nums, int l, int r)
33
+ {
34
+ if (l >= r) // remember to put the equal to sign
35
+ return ;
36
+
37
+ int m = l + (r - l)/2 ;
38
+ mergeSort (nums, l, m);
39
+ mergeSort (nums, m + 1 , r);
40
+ merge (nums, l, m, r);
41
+ }
42
+
43
+ vector<int > sortArray (vector<int >& nums)
44
+ {
45
+ mergeSort (nums, 0 , nums.size () - 1 );
46
+ return nums;
47
+ }
48
+
49
+
50
+ };
You can’t perform that action at this time.
0 commit comments