Skip to content

Commit 17f43c7

Browse files
committed
Merge sort algorithm
1 parent de0a0c2 commit 17f43c7

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Algorithm/mergeSort.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function mergeSort(arr) {
2+
if (arr.length < 2) return arr;
3+
let middleIndex = Math.floor(arr.length / 2);
4+
let firstHalf = arr.slice(0, middleIndex);
5+
let secondHalf = arr.slice(middleIndex);
6+
7+
return merge(mergeSort(firstHalf), mergeSort(secondHalf));
8+
}
9+
10+
function merge(arr1, arr2) {
11+
let result = [];
12+
while (arr1.length && arr2.length) {
13+
let minElem;
14+
if (arr1[0] < arr2[0]) minElem = arr1.shift();
15+
else minElem = arr2.shift();
16+
result.push(minElem);
17+
}
18+
19+
if (arr1.length) result = result.concat(arr1);
20+
else result = result.concat(arr2);
21+
return result;
22+
}
23+
24+
mergeSort([6000, 34, 203, 3, 746, 200, 984, 198, 764, 1, 9, 1]); // [ 1, 1, 3, 9, 34, 198, 200, 203, 746, 764, 984, 6000 ]

0 commit comments

Comments
 (0)