Olá, meu código apresenta o seguinte problema: Ao invés de retornar o array completamente ordenado, apenas retorna pares ordenados. Alguém pode me ajudar?
meu código:
const listaLivros = require('./listaLivros');
function mergeSort(lista) {
if (lista.length > 1) {
const meio = Math.floor(lista.length/2);
const parte1 = mergeSort(lista.slice(0, meio));
const parte2 = mergeSort(lista.slice(meio, lista.length));
lista = ordena(parte1, parte2)
}
return lista
}
function ordena(parte1, parte2) {
let posicaoAtualParte1 = 0;
let posicaoAtualParte2 = 0;
const resultado =[];
while (posicaoAtualParte1 < parte1.length && posicaoAtualParte2 < parte2.length) {
let itemAtualParte1 = parte1[posicaoAtualParte1];
let itemAtualParte2 = parte2[posicaoAtualParte2];
if (itemAtualParte1.preco < itemAtualParte1.preco) {
resultado.push(itemAtualParte1);
posicaoAtualParte1++
} else {
resultado.push(itemAtualParte2);
posicaoAtualParte2++
}
}
return resultado.concat(posicaoAtualParte1 < parte1.length
? parte1.slice(posicaoAtualParte1)
: parte2.slice(posicaoAtualParte2))
}
console.log(mergeSort(listaLivros))
o retorno no console:
[
{ nome: 'Python', preco: 20 },
{ nome: 'C#', preco: 33 },
{ nome: 'JavaScript', preco: 25 },
{ nome: 'Ruby', preco: 28 },
{ nome: 'Scala', preco: 40 },
{ nome: 'Rust', preco: 22 },
{ nome: 'Elixir', preco: 50 },
{ nome: 'PHP', preco: 15 },
{ nome: 'Java', preco: 30 },
{ nome: 'C++', preco: 35 },
{ nome: 'Go', preco: 45 }
]