2
respostas

problema na recursao

quando eu uso a recursao no mesmo codigo do instrutor, a constante parte 1 e 2 ficar indefinidas, já quando eu deixo de chamar da certinho, alguem pode me ajudar por favor?

const livros = require('./listalivros');
const listaordenada = [];

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));
        ordena(parte1,parte2,listaordenada);
    }
}
function ordena(arr1, arr2,arr3){
    var i = 0
    var o = 0
    while(i < arr1.length
        && o < arr2.length){
            if(arr1[i].preco < arr2[o].preco){
                arr3.push(arr1[i]);
                i++;
            }else{
                arr3.push(arr2[o]);
                o++;
            }
        }
    while( i < arr1.length
        || o < arr2.length){
            if(o < arr2.length){
                arr3.push(arr2[o]);
                o++;
            }else{
                arr3.push(arr1[i]);
                i++;
            }
        }
}

mergesort(livros);
console.log(listaordenada);

2 respostas

O meu também deu esse problema, resolvi chamando as const de "part 1" e "part 2"

Na verdade eu descobri o erro deste código, basicamente o retorto da função ordena tem que ser atribuito como um novo valor a array, e dar o retorno de array li em baixo pra subir pra proxima instancia com um parte ordenada