Skip to content

Commit 671fffd

Browse files
authored
Create 0912-sort-an-array.js
Added solution for Sorting an array in JS.
1 parent 9d668c6 commit 671fffd

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

javascript/0912-sort-an-array.js

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
var sortArray = function(nums) {
9+
10+
const merge = (left, mid, right) => {
11+
const arr1 = nums.slice(left, mid+1);
12+
const arr2 = nums.slice(mid+1, right + 1);
13+
14+
let p1 = 0;
15+
let p2 = 0;
16+
let gp = left;
17+
18+
while(p1 < arr1.length && p2 < arr2.length) {
19+
if(arr1[p1] < arr2[p2]) {
20+
nums[gp] = arr1[p1];
21+
p1++;
22+
} else {
23+
nums[gp] = arr2[p2];
24+
p2++;
25+
}
26+
gp++;
27+
}
28+
29+
while(p1 < arr1.length) {
30+
nums[gp] = arr1[p1];
31+
p1++;
32+
gp++;
33+
}
34+
35+
while(p2 < arr2.length) {
36+
nums[gp] = arr2[p2];
37+
p2++;
38+
gp++;
39+
}
40+
return nums;
41+
}
42+
43+
const mergeSort = (left, right) => {
44+
45+
if(left === right) return nums;
46+
47+
const mid = Math.floor((left+right)/2);
48+
mergeSort(left, mid);
49+
mergeSort(mid+1, right);
50+
return merge(left, mid, right);
51+
}
52+
53+
return mergeSort(0, nums.length - 1);
54+
};

0 commit comments

Comments
 (0)