2
respostas

Dúvida sobre parâmetros do Quicksort

Na assinatura do método particiona do Quicksort há um parâmetro chamado de que parece não ser utilizado na implementação. Então, poderia ser utilizado apenas os parâmetros nomes e ate?

private static int particiona(String[] nomes, int ate)
2 respostas

Boa noite, Thiago! Como vai?

Onde isso ocorre? Poderia indicar pra mim para que eu possa dar uma olhada? Assim poderei te ajudar de forma efetiva!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Boa noite. Tudo bom? A implementação do particiona apresentada durante a explicação do Quicksort é a seguinte:

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;
}

Em nenhum momento é usado o parâmetro inicial. Uma alternativa seria:

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;
}