Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 673c40a

Browse files
committed
feat: merge sort
1 parent b74f377 commit 673c40a

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

merge-sort.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
function mergeSort(arr) {
2+
var l = arr.length;
3+
if (l === 1) return arr;
4+
var m = Math.round(l / 2);
5+
var left = arr.slice(0, m);
6+
var right = arr.slice(m);
7+
return merge(mergeSort(left), mergeSort(right));
8+
}
9+
10+
function merge(arr1, arr2) {
11+
var l1 = arr1.length;
12+
var l2 = arr2.length;
13+
var i1 = 0;
14+
var i2 = 0;
15+
var r = [];
16+
while (i1 < l1 && i2 < l2) {
17+
var item1 = arr1[i1];
18+
var item2 = arr2[i2];
19+
if (item1 < item2) {
20+
r.push(item1);
21+
i1++;
22+
} else {
23+
r.push(item2);
24+
i2++;
25+
}
26+
}
27+
28+
while (i1 < l1) {
29+
r.push(arr1[i1++]);
30+
}
31+
32+
while (i2 < l2) {
33+
r.push(arr2[i2++]);
34+
}
35+
36+
return r;
37+
}
38+
39+
console.log(mergeSort([1, 4, 2, 3, 5, 2, 7, 3, 17, 25, 19]))

0 commit comments

Comments
 (0)