1
resposta

[Dúvida] Erro na linha 0

Verifiquei o código todo e comparei com o do GitHub e não consegui encontrar o erro.

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.length && posicaoAtualParte2 < parte2.length){
        let produtoAtualParte1 = parte1[posicaoAtualParte1]
        let produtoAtualParte2 = parte2[posicaoAtualParte2]
        if(produtoAtualParte1.preco < produtoAtualParte2.preco){
            resultado.push(produtoAtualParte1)
            produtoAtualParte1++
        }else{
            resultado.push(produtoAtualParte2)
            produtoAtualParte2++
        }
    }
    return resultado.concat(posicaoAtualParte1 < parte1.length ? parte1.slice(posicaoAtualParte1) : parte2.slice(posicaoAtualParte2))
}

console.log(mergeSort(listaLivros))
1 resposta

Já descobri o problema, estava aumentando o valor de produtoAtualParte1 ao invés de posicaoAtualParte1 lá no if.