-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmergesort.js
More file actions
25 lines (20 loc) · 726 Bytes
/
Copy pathmergesort.js
File metadata and controls
25 lines (20 loc) · 726 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const originalArr = [5, 3, 6, 7, 9, 2, 10]
function split(originalArr) {
if (originalArr.length < 2) {
return originalArr;
}
var center = Math.floor(originalArr.length / 2);
var firstHalf = split(originalArr.slice(0, center));
var secondHalf = split(originalArr.slice(center));
return merge(firstHalf, secondHalf);
}
function merge (leftArr, rightArr) {
var result = [];
while (leftArr.length > 0 && rightArr.length > 0)
result.push(leftArr[0] < rightArr[0]? leftArr.shift() : rightArr.shift());
return result.concat(leftArr.length? leftArr : rightArr);
}
let test = split([5, 3, 6, 7, 9, 2]);
let odd = split([5, 3, 6, 7, 9, 2, 10]);
console.log(test);
console.log(odd);