Meu código index.js da aula de mergeSort não funciona e eu não entendo o porquê alguém poderia me explicar ?
const listaLivros = require('./array')
function mergeSort(array, nivelAninhamento = 0){
console.log(`Nivel de aninhamento: ${nivelAninhamento}`)
if (array.length < 1) {
const meio = Math.floor(array.length / 2) //Arredonda número pra baixo
const parte1 = mergeSort(array.slice(0, meio), nivelAninhamento++);
const parte2 = mergeSort(array.slice(meio, array.length), nivelAninhamento++);
array = ordena(parte1, parte2);
// Recursão é resolver um problema em partes pequenas até a resolução total.
}
return array;
}
function ordena(parte1, parte2){
let posicaoAtualParte1 = 0;
let posicaoAtualParte2 = 0;
const resultado = [];
while (posicaoAtualParte1 < parte1.length && posicaoAtualParte2 < parte2.length) {
let produtoAtualParte1 = parte1[posicaoAtualParte1] // Atribui o produto da lista1 a posição atual da parte 1.
let produtoAtualParte2 = parte2[posicaoAtualParte2] // Atribui o produto da lista2 a posição atual da parte 2.
if (produtoAtualParte1.preco < produtoAtualParte2.preco){
resultado.push(produtoAtualParte1) // Manda pro final do array.
posicaoAtualParte1++ // Anda +1 indice.
} else {
resultado(produtoAtualParte2) // Manda pro final do array.
posicaoAtualParte2++ // Anda +1 indice.
}
}
return resultado.concat(posicaoAtualParte1 < parte1.length ? parte1.slice(posicaoAtualParte1) : parte2.slice(posicaoAtualParte2) )
}
console.log(mergeSort(listaLivros))
Esse é o resultado que eu tenho :
Nivel de aninhamento: 0
[
{ titulo: 'Go', preco: 45 },
{ titulo: 'C++', preco: 35 },
{ titulo: 'Java', preco: 30 },
{ titulo: 'PHP', preco: 15 },
{ titulo: 'Elixir', preco: 50 },
{ titulo: 'Rust', preco: 22 },
{ titulo: 'Scala', preco: 40 },
{ titulo: 'Ruby', preco: 28 },
{ titulo: 'JavaScript', preco: 25 },
{ titulo: 'C#', preco: 33 },
{ titulo: 'Python', preco: 20 }
]