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

Não esta ordenando

O meu codigo não esta ordenando. Segue codigo :

const listaLivros = [
    {
        titulo:"Go",
        preco: 45
    },
    {
        titulo:"C++",
        preco: 35
    },
    {
        titulo:"Java",
        preco: 30
    },
    {
        titulo:"PHP",
        preco: 15
    },
    {
        titulo:"Elixir",
        preco: 50
    },
    {
        titulo:"Rust",
        preco: 22
    },
    {
        titulo:"Scala",
        preco: 40
    },
    {
        titulo:"Ruby",
        preco: 28
    },
    {
        titulo:"Javascript",
        preco: 25
    },
    {
        titulo:"C#",
        preco: 33
    },
    {
        titulo:"Python",
        preco: 20
    }
]


module.exports = {listaLivros};
const listaLivros = require('./livros')

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 posAtualParte1 = 0
  let posAtualParte2 = 0
  const resultado = []

  while (posAtualParte1 < parte1.length && posAtualParte2 < parte2.length) {
    let prodAtualParte1 = parte1[posAtualParte1]
    let prodAtualParte2 = parte2[posAtualParte2]

    if (prodAtualParte1.preco < prodAtualParte2.preco) {
      resultado.push(prodAtualParte1)
      posAtualParte1++
    } else {
      resultado.push(prodAtualParte2)
      posAtualParte2++
    }
  }

  return resultado.concat(posAtualParte1 < parte1.length
    ? parte1.slice(posAtualParte1)
    : parte2.slice(posAtualParte2))
}

console.log(mergeSort(listaLivros))

Cheguei ate literalmente a copiar o codigo da instrutora porem mesmo assim não esta ordenando

3 respostas

Oi

Dei uma olhada no teu código e parece que tá rolando um Merge Sort em JavaScript, né? Mano, o código tá massa e deve dar um jeito na lista de livros de boa. Mas tipo, saca só, é bom dar uma conferida se tu tá chamando a função mergeSort do jeito certo e se tá importando direitinho o arquivo listaLivros.

Pode ser que o código não esteja fazendo a ordenação como deveria se tu não estiver chamando a função mergeSort com a lista de livros, tipo assim: mergeSort(listaLivros).

Outra parada é ver se tu tá importando o arquivo listaLivros na moral. Checa se o caminho do arquivo tá certinho e se tá usando o require na boa, tipo assim: const listaLivros = require('./livros').

Se tu já deu uma olhada nesses esquemas e o código ainda não tá na linha, pode ser que precise dar uma revisada na lógica do Merge Sort. Confirma se tá dividindo a array do jeito certo e mandando ver na ordenação de boas.

solução!

Não tenho certeza 100%, mas veja seu código no primeiro arquivo

module.exports = {listaLivros};

No exemplo é

module.exports = listaLivros;

Obrigado galera, o erro era as chaves mesmo na exportação, tava estudando outro metodo de import/export e acabei confundindo

module.exports = {listaLivros};

/

module.exports = listaLivros;