Skip to content

Commit ba08abb

Browse files
[LeetCode Sync] Runtime - 48 ms (85.14%), Memory - 75.3 MB (78.42%)
1 parent c160fd4 commit ba08abb

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var sortArray = function(nums) {
6+
let tempArr = Array(nums.length).fill(0)
7+
8+
let merge = (left, mid, right) => {
9+
let length1 = mid - left + 1
10+
let length2 = right - mid
11+
12+
let start1 = left
13+
let start2 = mid + 1
14+
15+
for (let i = 0; i < length1; i++) {
16+
tempArr[start1 + i] = nums[start1 + i]
17+
}
18+
for (let j = 0; j < length2; j++) {
19+
tempArr[start2 + j] = nums[start2 + j]
20+
}
21+
22+
let i = 0, j = 0, k = left
23+
while (i < length1 && j < length2) {
24+
if (tempArr[start1 + i] < tempArr[start2 + j]) {
25+
nums[k] = tempArr[start1 + i]
26+
i += 1
27+
} else {
28+
nums[k] = tempArr[start2 + j]
29+
j += 1
30+
}
31+
k += 1
32+
}
33+
34+
while (i < length1) {
35+
nums[k] = tempArr[start1 + i]
36+
i += 1
37+
k += 1
38+
}
39+
while (j < length2) {
40+
nums[k] = tempArr[start2 + j]
41+
j += 1
42+
k += 1
43+
}
44+
}
45+
46+
let mergeSort = (left, right) => {
47+
if (left >= right) return
48+
49+
let mid = Math.floor((left + right) / 2)
50+
51+
mergeSort(left, mid)
52+
mergeSort(mid + 1, right)
53+
54+
merge(left, mid, right)
55+
}
56+
57+
mergeSort(0, nums.length - 1)
58+
return nums
59+
};

0 commit comments

Comments
 (0)