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)

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
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;
}