Skip to content

Commit 1f8cedc

Browse files
authored
Merge pull request neetcode-gh#2544 from aadil42/patch-45
Create 0912-sort-an-array.js
2 parents a021284 + 5902fc8 commit 1f8cedc

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

javascript/0912-sort-an-array.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* https://leetcode.com/problems/sort-an-array/
3+
* Merge Sort
4+
* Time O(n*log(n)) | Space O(n)
5+
* @param {number[]} nums
6+
* @return {number[]}
7+
*/
8+
const sortArray = function(nums) {
9+
return mergeSort(0, nums.length - 1, nums);
10+
};
11+
12+
const mergeSort = (left, right, nums) => {
13+
14+
if(left === right) return nums;
15+
16+
const mid = Math.floor((left+right)/2);
17+
mergeSort(left, mid, nums);
18+
mergeSort(mid+1, right, nums);
19+
return merge(left, right, mid, nums);
20+
}
21+
22+
const merge = (left, right, mid, nums) => {
23+
const arr1 = nums.slice(left, mid+1);
24+
const arr2 = nums.slice(mid+1, right + 1);
25+
26+
let p1 = 0;
27+
let p2 = 0;
28+
let gp = left;
29+
30+
while(p1 < arr1.length && p2 < arr2.length) {
31+
if(arr1[p1] < arr2[p2]) {
32+
nums[gp] = arr1[p1];
33+
p1++;
34+
} else {
35+
nums[gp] = arr2[p2];
36+
p2++;
37+
}
38+
gp++;
39+
}
40+
41+
while(p1 < arr1.length) {
42+
nums[gp] = arr1[p1];
43+
p1++;
44+
gp++;
45+
}
46+
47+
while(p2 < arr2.length) {
48+
nums[gp] = arr2[p2];
49+
p2++;
50+
gp++;
51+
}
52+
return nums;
53+
}

0 commit comments

Comments
 (0)