2
respostas

Correção no curso de algoritmos, aula 5, método novoSort

Bom dia pessoal

Na aula 5 me parece que há um erro no método novoSort. O método apresentado no texto está da seguinte forma:

private static void novoSort(Produto[] produtos, int quantidadeDeElementos) {
        for (int atual = 0; atual < quantidadeDeElementos - 1; atual++) {
            int analise = atual;
            while (analise > 0 && produtos[analise].getPreco() < produtos[analise - 1].getPreco()) {
                Produto produtoAnalise = produtos[analise];
                Produto produtoAnaliseMenos1 = produtos[analise - 1];
                produtos[analise] = produtoAnaliseMenos1;
                produtos[analise - 1] = produtoAnalise;
                analise--;
            }
        }
    }

E resulta na seguinte ordenação; Brasília custa R$16000.0 Jipe custa R$46000.0 Smart custa R$46000.0 Lamborghini custa R$1000000.0 Fusca custa R$17000.0

Se consertarmos o for retirando o "-1" que vem após a variável quantidadeDeElementos a ordenação estará correta.

Por gentileza testem e me digam se estou cometendo algum erro?

Obrigado.

2 respostas

Olá!

Não testei seu código, mas vejo que a variável 'quantidadeDeElementos' é do tipo 'int', portanto faz sentido a sua alteração. O uso do -1 é para o ajuste do indice de uma array, pois quando varremos uma array iniciamos do indice 0 (primeiro elemento).

Oi Frederico,

Você tem razão. Inclusive o instrutor escreve

for(int atual = 0; atual < quantidadeDeElementos; atual++);

algumas linhas acima. Vou encaminhar para a equipe de conteúdo resolver o mais rápido possível.