Skip to content

Commit feb803c

Browse files
Create 0912-sort-an-array.cpp
1 parent 022d6a8 commit feb803c

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

cpp/0912-sort-an-array.cpp

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
Given an array of integers nums, sort the array in ascending order and return it.
3+
Ex. nums = [5,2,3,1] -> [1,2,3,5]
4+
5+
Use Merge sort to sort the array.
6+
7+
Time - O(nlogn)
8+
Space - O(n)
9+
*/
10+
11+
class Solution {
12+
private:
13+
void merge(vector<int> &nums, int low, int mid, int high) {
14+
if(low >= high)
15+
return;
16+
17+
int l = low, r = mid + 1, k = 0, size = high - low + 1;
18+
vector<int> sorted(size, 0);
19+
20+
while (l <= mid and r <= high){
21+
if(nums[l] < nums[r])
22+
sorted[k++] = nums[l++];
23+
else
24+
sorted[k++] = nums[r++];
25+
}
26+
27+
while(l <= mid)
28+
sorted[k++] = nums[l++];
29+
while(r <= high)
30+
sorted[k++] = nums[r++];
31+
32+
for(k = 0; k < size; k++)
33+
nums[k + low] = sorted[k];
34+
}
35+
36+
void mergeSort(vector<int>& nums, int low, int high){
37+
if(low >= high)
38+
return;
39+
40+
int mid = low + (high - low) / 2;
41+
42+
mergeSort(nums, low, mid);
43+
mergeSort(nums, mid + 1, high);
44+
merge(nums, low, mid, high);
45+
}
46+
47+
public:
48+
vector<int> sortArray(vector<int>& nums) {
49+
mergeSort(nums, 0, nums.size()-1);
50+
return nums;
51+
}
52+
};

0 commit comments

Comments
 (0)