Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

insertionSort

Boa noite! Gostaria que explicasse melhor a utilização do "analise --". Não consegui entender muito bem.

Pode até explicar o algoritmo inteiro.

Muito obrigado!

1 resposta
solução!

Boa noite! Funciona assim, ~duelo? (:

Antes de tudo:

analise--;

siginifica a mesma coisa que:

analise = analise - 1;

É apenas uma forma mais prática de escrever.

Agora o algorítimo:

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

Implementando a ordenação por inserção

Aqui queremos ordernar inserindo cada valor na sua posicao correta partindo do começo E a cada valor comparando o atual com todos os outros valores que ja passamos. Por isso, o valor de análise é a posição do objeto atual que estamos alocando na posição correta, (veja que pra cada iteração do for, dizemos que

int analise = atual;
  1. No for checamos todos os elementos do array, então para cada iteração do for usamos um elemento atual diferente. (atual++)

  2. No while, colocaremos o elemento atual, na sua posição ordenada. Porém, vamos trocando ele da posição atual (produtos[analise]) com a posição anterior (produtos[analise - 1]) em cada iteração do while Até que ele chegue na posição ordenada correta, ou seja, que o valor dele seja maior que o anterior. produtos[analise].getPreco() > produtos[analise - 1].getPreco(), logo, sai do while.

  3. Porém, a cada vez que terminamos uma iteração do while, precisamos atualizar a posição de analise porque acabamos de troca-lo de posição com seu objeto anterior. Por isso, fazemos analise--;

Ficou mais claro?

Espero ter ajudado.

Qualquer dúvida que tiver, é só perguntar! Bons estudos!