1
resposta

Lógica do método particiona

Acredito ter encontrado um probleminha na lógica do método particiona.

Mesmo quando o chamamos para particionar a segunda parte do array, ele compara com todo o array novamente sem necessidade, tendo em vista que a primeira parte já está ordenada.

Fiz o seguinte ajuste no código para levar em conta a posição inicial:

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

        Nota pivo = notas[termino - 1];
        for(int analisando = inicial; 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;
    }

Realmente faz sentido essa correção na visão de vocês?

1 resposta

Ficou dahora. Mas como é pra fins didáticos o código do professor tá bom.

E também cara pra processamento de máquina isso é infimo. Isso só vai começar a pesar em um sort com 1 bilhão de valores.