hd-utils
Version:
A handy utils for modern JS developers
35 lines (34 loc) • 1.06 kB
JavaScript
/**
* @description an implementation for mergeSort algorithm, it will sort an array of numbers or strings.
* @example
* const arrayToSort = [3, 1,-1, 0, 4, 1, 5, 9, 2, 6, 5, 3, 5];
mergeSort(arrayToSort) // [ -1, 0, 1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9 ];
* @param left
* @param right
* @returns
*/
export default function mergeSort(arr) {
if (arr.length <= 1) {
return arr;
}
const middle = Math.floor(arr.length / 2);
const left = arr.slice(0, middle);
const right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right) {
let result = [];
let leftIndex = 0;
let rightIndex = 0;
while (leftIndex < left.length && rightIndex < right.length) {
if (left[leftIndex] < right[rightIndex]) {
result.push(left[leftIndex]);
leftIndex++;
}
else {
result.push(right[rightIndex]);
rightIndex++;
}
}
return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
}