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! 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!