const mergeArr = (left, right) => {
let temp = []
let leftIndex = 0
let rightIndex = 0
while (left.length > leftIndex && right.length > rightIndex) {
if (left[leftIndex] <= right[rightIndex]) {
temp.push(left[leftIndex])
leftIndex++
} else {
temp.push(right[rightIndex])
rightIndex++
}
}
return temp.concat(left.slice(leftIndex)).concat(right.slice(rightIndex))
}
const 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);
console.log(left, right);
return mergeArr(mergeSort(left), mergeSort(right))
}
const testArr = [10,9,8,7,6,5,4,3,2,1];
const res = mergeSort(testArr)
console.log(res)
console