1
resposta

Duvida com o MergeSort

Cometi algum erro na hora de juntar as listas na função ordena() e estou com dificuldade de entender onde errei;

O mergeSort esta apresentando o resultado:

[ { titulo: 'PHP', preco: 15 }, { titulo: 'Python', preco: 20 } ]

const listaLivros = require('./array');

function mergeSort(array){
    if(array.length > 1){
        let metade = Math.floor(array.length / 2);
        let primeiraParte = mergeSort(array.slice(0, metade));
        let segundaParte = mergeSort(array.slice(metade, array.length));
        array = ordena(primeiraParte, segundaParte);
    }``
    return array; 
}

function ordena(primeiraParte, segundaParte){
    let posicaoAtual1 = 0;
    let posicaoAtual2 = 0;
    let resultado = [];

    while( posicaoAtual1 < primeiraParte.length  && posicaoAtual2 < segundaParte.length ){
        let produtoAtual1 = primeiraParte[posicaoAtual1];
        let produtoAtual2 = segundaParte[posicaoAtual2];

        if(produtoAtual1.preco < produtoAtual2.preco){
            resultado.push(produtoAtual1);
            posicaoAtual1++;
        }else{
            resultado.push(produtoAtual2);
            posicaoAtual2++;
        }
    }

    return resultado.concat(posicaoAtual1 < primeiraParte.legth
        ? primeiraParte.slice(posicaoAtual1)
        : segundaParte.slice(posicaoAtual2));
}

console.log((mergeSort(listaLivros)))
1 resposta

Olá Jean, tudo bem?

Peço desculpa pela demora para responder o seu tópico.

Pelo que pude perceber, o erro está na função "ordena". Na linha return resultado.concat(posicaoAtual1 < primeiraParte.legth, a palavra legth está escrita incorretamente. Acredito que o correto seria length.

Tente fazer essa correção e veja se o resultado é o esperado. Caso ainda tenha dificuldades, me avise que tentarei ajudar da melhor forma possível.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!