O meu programa está retornando isso:
[
{ titulo: 'PHP', preco: 15 },
{ titulo: 'Python', preco: 20 },
{ titulo: 'Rust', preco: 22 },
{ titulo: 'JavaScript', preco: 25 },
false,
false,
false,
{ titulo: 'Java', preco: 30 },
{ titulo: 'C++', preco: 35 },
{ titulo: 'Go', preco: 45 }
]
Aí o meu código:
const bookList = require('./array.js');
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.length && posicaoAtualParte2 < parte2.length) {
let produtoAtualParte1 = parte1[posicaoAtualParte1];
let produtoAtualParte2 = parte2[posicaoAtualParte2];
if(produtoAtualParte1.preco < produtoAtualParte2.preco) {
//console.log(produtoAtualParte1);
resultado.push(produtoAtualParte1);
posicaoAtualParte1 += 1;
} else {
//console.log(produtoAtualParte2);
resultado.push(produtoAtualParte2);
posicaoAtualParte2 += 1;
}
}
return resultado.concat(posicaoAtualParte1 < parte1.length ? parte1.slice(posicaoAtualParte1)
: posicaoAtualParte2 < parte2.slice(posicaoAtualParte2));
}
console.log(mergeSort(bookList));
Código da lista de livros:
const listaLivros = [
{ 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 },
]
Já olhei todo o código varias vezes e não encontrei o erro... Alguém pode me ajudar??