1
resposta

porquê minha lista de livros não aparece do menor para o maior?

#Esse é o código da lista dos livros

const precoLivros = [
    {
        titulo:'javascript',
        preco:25
    },
    {
        titulo:'PHP',
        preco:15
    },
    {
        titulo:'java',
        preco:30
    },
    {
        titulo:'Elixir',
        preco:50
    },
    {
        titulo:'Go',
        preco:45
    },
    {
        titulo:'phyton',
        preco:20
    }];

    module.exports = precoLivros;

Esse é o meu código do insertion sort

const livros = require('./listalivros');
const menorValor = require('./menorValor');
function insertionSort(lista){
    for(let atual = 0; atual < lista.lenght; atual++){
        let analise = atual;
        while(analise > 0 && lista[analise].preco < lista[analise - 1].preco){

            let itemAnalise = lista[analise]
            let itemAnterior = lista[analise - 1]

            lista[analise] = itemAnterior
            lista[analise - 1] = itemAnalise
            analise--
        }
    }
    console.log(lista);
}
insertionSort(livros);

Esse é o do menor valor

const livros = require('./listalivros');

function menorValor(arrProdutos, posicaoInicial) {
    let maisBarato = posicaoInicial;
    for (let atual = posicaoInicial; atual < arrProdutos.length; atual++) {
        if (arrProdutos[atual].preco < arrProdutos[maisBarato].preco) {
            maisBarato = atual;
        }
    }
return maisBarato;
}
module.exports = menorValor;

Esse é o do selection sort

const livros = require('./listalivros');

const menorValor = require('./menorValor');

for(let atual = 0; atual<livros.length;atual++){
    let menor = menorValor(livros,atual);

    let livroAtual = livros[atual];
    console.log("O livro atual é ", livros[atual]);
    let livroMenorPreco = livros[menor];
    console.log("O livro de menor preco é ",livros[menor]);

    livros[atual] = livroMenorPreco;
    livros[menor] = livroAtual;
}
console.log(livros);
1 resposta

No insert sort, você escreveu length errado.

Errado: for(let atual = 0; atual < lista.lenght; atual++)

Certo: for(let atual = 0; atual < lista.length; atual++)