odin-codespace/csci/mergeSort.js

34 lines
821 B
JavaScript
Raw Normal View History

2024-01-25 13:12:29 -05:00
function mergeSort(arr) {
if (arr.length <= 1) {
return arr;
} else {
let half = Math.round(arr.length / 2);
let leftSide = mergeSort(arr.slice(0, half));
let rightSide = mergeSort(arr.slice(half, arr.length));
let newArr = mergeArray(leftSide, rightSide);
return newArr;
}
}
function mergeArray(left, right) {
let sorted = [];
while (left.length && right.length) {
if (left[0] < right[0]) {
sorted.push(left.shift());
} else {
sorted.push(right.shift());
}
}
return sorted.concat(left, right);
}
let testCaseOne = [2, 1, 3, 9, 4, 5, 23, 10];
let testCaseTWo = [23, 5, 3, 1, 8, 7, 2, 4];
console.log(`Test Case No1: ${testCaseOne}`);
console.log(mergeSort(testCaseOne));
console.log(`Test Case No2: ${testCaseTWo}`);
console.log(mergeSort(testCaseTWo));