1
resposta

Não consigo ordenar o meu array

segue os 2 códigos usados na aula de mergeSort, não estou entendendo como que o programa n esta conseguindo ordenar o array mesmo não apresentando nenhum erro quando rodo o codigo,

codigo 1 (livros):

const listaLivros = [
    {
        titulo: "PHP",
        preco: 15.00
    }, 
    {
        titulo: "JavaScript",
        preco: 25.00
    },
    {
        titulo: "java",
        preco: 30.00
    },
    {
        titulo: "GO",
        preco: 45.00
    }, 
    {
        titulo: "Elixir",
        preco: 50.00
    },
    {        
        titulo: "Python",
        preco: 20.00
    },
    {        
        titulo:"Rust",
        preco: 22.00
    },
    {        
        titulo:"Ruby",
        preco: 28.00
    },
    {        
        titulo:"C#",
        preco: 33.00
    },
    {        
        titulo:"C++",
        preco: 35.00
    },
]

module.exports = {listaLivros}

codigo 2 (Mergesort)

const listaLivros = require('./livros')

function mergeSort(arr){
    if(arr.length > 1){
        const midle = Math.floor(arr.length/2);
        const pt1 = mergeSort(arr.slice(0, midle));
        const pt2 = mergeSort(arr.slice(midle, arr.length));
        arr = ordena(pt1,pt2);
    }

    return arr;
}

function ordena(pt1, pt2){
    let posicaoAtualpt1 = 0;
    let posicaoAtualpt2 = 0;
    const resultado = [];

    while (posicaoAtualpt1 < pt1.length && posicaoAtualpt2 < pt2.length){
        let produtoAtualpt1 = pt1[posicaoAtualpt1];
        let produtoAtualpt2 = pt2[posicaoAtualpt2];

        if (produtoAtualpt1.preco < produtoAtualpt2.preco){
            resultado.push(produtoAtualpt1);
            posicaoAtualpt1++;
        } else{
            resultado.push(produtoAtualpt2);
            posicaoAtualpt2++;
        }
    }

    return resultado.concat (posicaoAtualpt1 < pt1.length ? pt1.slice(posicaoAtualpt1) : pt2.slice(posicaoAtualpt2))
}

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

Oi, Lucas, tudo bem?

Continua não ordenando? Pois rodei seu código em minha máquina e a ordenação foi executada corretamente.

Fico no aguardo.

Abraços e bons estudos!