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!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!
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;
No for checamos todos os elementos do array, então para cada iteração do for usamos um elemento atual diferente. (atual++)
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.
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!