No se puede obtener una salida de terminal debido a un error: RangeError no capturado: se excedió el tamaño máximo de la pila de llamadas.
Traté de ver preguntas similares en stackoverflow, como este Tamaño máximo de la pila de llamadas excedido en la ordenación de combinación y añadí condicionales para posiblemente detener la recursividad infinita.
Todavía no pude solucionar el problema. Ojalá busque una respuesta.
const unsortedArray = [1, 10, 5, 8, 7, 6, 4, 3, 2, 9]; const sortedArray = Array(unsortedArray.length); function sort(unsortedArray, start, middle, end) { let i= start; let j= middle; let k= start; while(i < middle && j <= end) { if(unsortedArray[i]<=unsortedArray[j]) { sortedArray[k] = unsortedArray[i]; i++ } else { sortedArray[k] = unsortedArray[j]; j++; } k++ } if (i >= middle) { while(j<= end) { sortedArray[k] = unsortedArray[j]; j++; k++; } } else if (j >= end) { while (i <= middle) { sortedArray[k] = unsortedArray[i]; i++; k++; } } } function splitMerge(unsortedArray, start, end) { if(end>start) { middle = Math.floor((start + end)/2); splitMerge(unsortedArray, start, middle); splitMerge(unsortedArray, middle, end); sort(unsortedArray, start , middle, end); } return sortedArray; } const showResult = splitMerge(unsortedArray, 0, unsortedArray.length-1); console.log(showResult);