Skip to content

Commit ca7bfef

Browse files
author
highflyer910
committed
Merge sort
1 parent a9ef685 commit ca7bfef

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

mergesort.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
function mergeSort (arr) {
2+
if (arr.length < 2) return arr;
3+
var middleIndex = Math.floor(arr.length / 2);
4+
var firstHalf = arr.slice(0, middleIndex);
5+
var secondHalf = arr.slice(middleIndex);
6+
7+
return merge(mergeSort(firstHalf), mergeSort(secondHalf));
8+
}
9+
10+
function merge (array1, array2) {
11+
var result = [];
12+
while (array1.length && array2.length) {
13+
var minElem;
14+
if (array1[0] < array2[0]) minElem = array1.shift();
15+
else minElem = array2.shift();
16+
result.push(minElem);
17+
}
18+
19+
if (array1.length) result = result.concat(array1);
20+
else result =result.concat(array2);
21+
return result;
22+
}

0 commit comments

Comments
 (0)