Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 17f43c7

Browse files
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

Lines changed: 24 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /