Segui o passo a passo da aula, mas no final a lista não ficou ordenada, apenas mostrou o ultimo item da array listaLivros que era o: {título: 'Python', preco: 20}
Fiz o teste de mesa colocando console.log em alguns pontos, mas mesmo assim não encontrei o erro.
Código utilizado:
const listaLivros = require('./array');
function mergeSort(array) {
if (array.length > 1) {
const meio = Math.floor(array.length / 2);
const parte1 = mergeSort(array.slice(0, meio));
const parte2 = mergeSort(array.slice(meio, array.length));
array = ordena(parte1, parte2);
}
return array;
}
function ordena(parte1, parte2) { let posicaoAtualParte1 = 0; let posicaoAtualParte2 = 0; const resultado = [];
while (posicaoAtualParte1 < parte1.lenght && posicaoAtualParte2 < parte2.length) {
let produtoAtualParte1 = parte1[posicaoAtualParte1];
let produtoAtualParte2 = parte2[posicaoAtualParte2];
if (produtoAtualParte1.preco < produtoAtualParte2.preco) {
resultado.push(produtoAtualParte1);
posicaoAtualParte1++;
} else {
resultado.push(produtoAtualParte2);
posicaoAtualParte2++;
}
}
return resultado.concat(posicaoAtualParte1 < parte1.lenght
? parte1.slice(posicaoAtualParte1)
: parte2.slice(posicaoAtualParte2));
}
console.log(mergeSort(listaLivros));