1
resposta

[Dúvida] O retorno e sempre o espaço da memoria, e o algoritmo não ordena.

O retorno e sempre o espaço da memoria, e o algoritmo não ordena.

Menor valor

let precosLivros = require("./livros.json");

function menorValor(arrayProdutos, posicaoInicial){
let maisBarato = posicaoInicial;
for( let atual = 0; atual < precosLivros.length; atual++){
    if(arrayProdutos[atual].Preco < arrayProdutos[maisBarato].Preco){
        maisBarato = atual;
    }
}

 return maisBarato;

}

console.log(precosLivros)

module.exports = menorValor;

Selection Sort

const livros = require('./livros.json');
const menorValor = require("./menorValor");

livros.forEach((_, indice) =>{

    let menor = menorValor(livros,indice);
    
    let livroAtual = livros[indice];
    console.log(`A posição atual é: ${livroAtual}`)
    console.log(`O livro atual é: ${livros[indice]}`)
    let livroMenorPreco =  livros[menor];
    console.log(`O livro de menor preço é: ${livros[menor]}`)
    
    livros[indice] = livroMenorPreco;
    livros[menor] = livroAtual;
})

console.log(livros);

Já bati cabeça, não consegui encontrar o erro...

1 resposta

Olá, Raphael! Como vai?

Ao analisar seu código, notei que você está utilizando a função menorValor para encontrar a posição do elemento de menor valor em cada iteração do loop do Selection Sort. No entanto, acredito que você está passando o array precosLivros como argumento para a função menorValor, em vez de passar o array arrayProdutos que é recebido como parâmetro.

Dessa forma, sugiro que você faça a seguinte alteração no código do Selection Sort:

livros.forEach((_, indice) => {
    let menor = menorValor(livros, indice);
    // Restante do código...
})

Altere para:

livros.forEach((_, indice) => {
    let menor = menorValor(livros, indice);
    // Restante do código...
})

Isso deve corrigir o problema e permitir que o algoritmo de ordenação funcione corretamente.

Bons estudos!