1
resposta

Codigo do mergeSort não ordenou a lista

Segui o passo a passo da aula, mas no final a lista não ficou ordenada, apenas mostrou o ultimo item da array listaLivros que era o: {título: 'Python', preco: 20}

Fiz o teste de mesa colocando console.log em alguns pontos, mas mesmo assim não encontrei o erro.

Código utilizado:

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

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.lenght && 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.lenght
    ? parte1.slice(posicaoAtualParte1)
    : parte2.slice(posicaoAtualParte2));

}

console.log(mergeSort(listaLivros));

1 resposta

Já encontrei o erro, escrevi length errado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software