Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

alguém pode me dizer porque o código não ordena?

código 1

const edFolha = [
    {
        nome:"PHP",
        preco: 56
    },
    {
        nome: "JavaScript",
        preco: 27
    },
    {
        nome: "Java",
        preco: 89
    },
    {
        nome: "Go",
        preco: 47
    },
    {
        nome: "Elixir",
        preco: 46
    }
]

const edGalho = [
    {
        nome: "Python",
        preco: 3
```4
    },
    {
        nome:"Rust",
        preco: 22
    },
    {
        nome: "Ruby",
        preco: 26
    },
    {
        nome: "C#",
        preco: 375
    },
    {
        nome: "C++",
        preco: 387
    },
    {
        nome: "Scala",
        preco: 42
    }
]

module.exports = { edFolha, edGalho }

código 2

const ListaDeLivros = require ("./listalivros")

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 posiçãoatualparte1 = 0
    let posiçãoatualparte2 = 0

    const resultado = []

    while(posiçãoatualparte1 < parte1.length && posiçãoatualparte2 < parte2.length){
        let produtoatualparte1 = parte1[posiçãoatualparte1]
        let produtoatualparte2 = parte2[posiçãoatualparte2]

        if(produtoatualparte1.preco < produtoatualparte2.preco){
            resultado.push(produtoatualparte1)
            posiçãoatualparte1++;
        }else{
            resultado.push(produtoatualparte2)
            posiçãoatualparte2++;
        }
    }

    return resultado.concat(posiçãoatualparte1 < parte1.length ? parte1.slice(posiçãoatualparte1) : parte2.slice(posiçãoatualparte2))
}
console.log(mergeSort(ListaDeLivros))
3 respostas

Seu código com os objetos tem um erro nesse trecho:

 {
        nome: "Python",
        preco: 3
```4
    },

Deixe assim:

 {
        nome: "Python",
        preco: 3
    },

Ai veja se ordena, caso não ordene ai vamos ter q rever o que pode ser, mas a princípio o que está saltando aos olhos é isso.

olá, isso foi um erro de digitação durante o a postagem, o código não ordena corretamente ainda.

solução!

Oi, Gustavo! O método mergeSort não está pegando as arrays dentro dos atributos edFolha e edGalho, teria q fazer uma verificação para percorrer dentro do objeto e pegar as arrays e ordenar as arrays, se vc mudar a chamda do método de mergeSort(listalisvros) para mergeSort(listaLivros.edGalho), você verá que está ordenando perfeitamente pelo preço, ai é só fazer essa validação para pegar a array dentro do atributo.