1
resposta

Por que criar uma let analise no insertion sort?

Na linha 6 do código da aula 3 (Insertion Sort) foi criado uma let com o nome de "analise" que recebeu o valor da let "atual". Por que não usar apenas a let atual? A não ser que eu tenha cometido um erro e não percebi, eu refatorei o código trocando "analise" e deixando apenas "atual" e funcionou igual. Segue o meu código:

const livros = require("./listaLivros");

function insertionSort(lista) {

    for (let atual = 0; atual < lista.length; atual++) {
        // let analise = atual;

        while (atual > 0 && lista[atual].preco < lista[atual - 1].preco) {
            let itemAnalise = lista[atual];
            let itemAnterior = lista[atual - 1];

            lista[atual] = itemAnterior;
            lista[atual - 1] = itemAnalise;

            atual--;
        }
    }
    console.log(lista);
}

insertionSort(livros);
1 resposta

Olá Vinicius.

A variável analise serve para não manipular o valor de atual, justamente o que está acontecendo no seu código. Pois o for depende do valor original de atual para funcionar corretamente.

Alterar o valor de atual pode gerar um loop infinito no for ou executar o loop menos/mais vezes do que deveria.

Dentro do while em atual--; está interferindo na quantidade de execuções do for.

Abraço.