Está ordenando só 3 itens da lista, por exemplo, PHP, Rust e Ruby, o que há de errado no código?
const listaLivros =
[{
titulo: "Rust",
preco: 22,
},{
titulo: "Ruby",
preco: 28,
},{
titulo: "C#",
preco: 33,
}, {
titulo: "C++",
preco: 35,
},{
titulo: "Scala",
preco: 40,
},{
titulo: "PHP",
preco: 15,
},{
titulo: "JavaScript",
preco: 25,
},{
titulo: "Java",
preco: 30,
},{
titulo: "Go",
preco: 45,
},{
titulo: "Elixir",
preco: 50,
},{
titulo: "Python",
preco: 20,
}];
module.exports = listaLivros;
const listaLivros = require('./arrays');
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) {
const resultado = [];
let posicaoAtualParte1 = 0;
let posicaoAtualParte2 = 0;
while(posicaoAtualParte1 < parte1.length && 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.length ?
parte1.slice(posicaoAtualParte1) :
parte2.slice(posicaoAtualParte2)
);
}
}
console.log(mergeSort(listaLivros));