A função após ordenar as listas edFolha e edGalho não as juntam. Função mergeSort:
const listaLivros = require("./arrays");
const ordena = require("./ordena");
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;
}
console.log(mergeSort(listaLivros));
Função ordena:
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));
}
module.exports = {ordena};
O output da função mergeSort:
{
edFolha: [
{ titulo: 'PHP', preco: 15 },
{ titulo: 'JavaScript', preco: 25 },
{ titulo: 'Java', preco: 30 },
{ titulo: 'Go', preco: 45 },
{ titulo: 'Elixir', preco: 50 }
],
edGalho: [
{ titulo: 'Python', preco: 20 },
{ titulo: 'Rust', preco: 22 },
{ titulo: 'Ruby', preco: 28 },
{ titulo: 'C#', preco: 33 },
{ titulo: 'C++', preco: 35 },
{ titulo: 'Scala', preco: 40 }
]
}
Como pode-se ver, as duas listas não se uniram. Eu já tentei colocar a função ordena no mesmo arquivo, mas mesmo assim não funcionou. O que eu estou fazendo de errado? Acho que estamos diante do icônico fenômeno: "mas no meu computador funcionou"