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

Possível melhoria no algoritmo - eliminando iterações desnecessárias

Professor, O método particiona não utiliza o parâmetro inicial, portanto a analise esta sempre iniciando a partir da primeira posição do array, independente de qual trecho do array esta sendo avaliado.

Algoritmo da aula:

private static int particiona(Nota[] notas, int inicial, int termino) {
    int menoresEncontrados = 0;

    Nota pivo = notas[termino - 1];
    for(int analisando = 0; analisando < termino -1; analisando ++) {
    Nota atual = notas[analisando];
    if(atual.getValor() <= pivo.getValor()) {
        troca(notas, analisando, menoresEncontrados);
        menoresEncontrados++;
        }
    }
    troca(notas, termino -1, menoresEncontrados);
    return menoresEncontrados;
}

Creio que iterações desnecessárias podem ser eliminadas ao setarmos o valor inicial da variável analisando do loop para o valor recebido no parâmetro inicial. Faz sentido?

1 resposta
solução!

Faz sentido sim. Se utilizar o valor inicial, vai conseguir fazer a partição de apenas um trecho do array como foi explicado em aula.