0
respostas

porque esse código não ordena corretamente?

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: 34
    },
    {
        nome:"Rust",
        preco: 22
    },
    {
        nome: "Ruby",
        preco: 26
    },
    {
        nome: "C#",
        preco: 375
    },
    {
        nome: "C++",
        preco: 387
    },
    {
        nome: "Scala",
        preco: 42
    }
]

module.exports = { edFolha, edGalho }
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))
}

const galho = ListaDeLivros.edGalho

const folha = ListaDeLivros.edFolha

console.log(mergeSort(ListaDeLivros.edFolha))
console.log(mergeSort(ListaDeLivros.edGalho))




function junta(lista1, lista2){
    let listafinal = [];
    let posiçãoAtualLista1 = 0;
    let posiçãoAtualLista2 = 0;
    let atual = 0;

    while (posiçãoAtualLista1 < lista1.length && posiçãoAtualLista2 < lista2.length){
        let produtoAtualLista1 = lista1[posiçãoAtualLista1];
        let produtoAtualLista2 = lista2[posiçãoAtualLista2];

        if(produtoAtualLista1.preco < produtoAtualLista2.preco){
            listafinal[atual] = produtoAtualLista1;
            posiçãoAtualLista1++
        }else{
            listafinal[atual] = produtoAtualLista2;
            posiçãoAtualLista2++
        } atual++
    }
    while (posiçãoAtualLista1 < lista1.length){
        listafinal[atual] = lista1[posiçãoAtualLista1];
        posiçãoAtualLista1++;
        atual++
    }
    while (posiçãoAtualLista2 < lista2.length){
        listafinal[atual] = lista1[posiçãoAtualLista2];
        posiçãoAtualLista2++;
        atual++;
    }

    return listafinal
}

console.log(junta(galho, folha))