function Merge(left, right) { let resultArray = [], leftIndex = 0, rightIndex = 0; while (leftIndex < left.length && rightIndex < right.length) { if (left[leftIndex] < right[rightIndex]) { resultArray.push(left[leftIndex]); leftIndex++; } else { resultArray.push(right[rightIndex]); rightIndex++; } } return resultArray .concat(left.slice(leftIndex)) .concat(right.slice(rightIndex)); } function MergeSort(arr) { if (arr.length <= 1) { return arr; } let middle = Math.floor(arr.length/2); let left = arr.slice(0, middle); let right = arr.slice(middle); return Merge(MergeSort(left), MergeSort(right)); } export default MergeSort;