Assinale a alternativa que descreve corretamente a operação ...

Próximas questões
Com base no mesmo assunto
Q1933526 Algoritmos e Estrutura de Dados

Assinale a alternativa que descreve corretamente a operação que o método abaixo realiza sobre um vetor (v) de números inteiros.


                                                   public void operacao(int[] v) {

                                                      for(int i = 0; i < v.length - 1; i++) {

                                                        for(int j = 0; j < v.length - 1 - i;

                                                  j++) {

                                                          if(v[j] < v[j + 1]) {

                                                             int aux = v[j];

                                                             v[j] = v[j + 1];

                                                             v[j + 1] = aux;

                                                           }

                                                        }

                                                     }

                                                  }

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: Alternativa C - Ordenação em Ordem Decrescente

Para resolver esta questão, é importante compreender o funcionamento dos algoritmos de ordenação e quais operações eles realizam sobre um vetor. O problema específico requer a análise de um método que manipula um vetor de números inteiros.

Vamos detalhar o que o método faz:

O método operacao(int[] v) utiliza dois laços for aninhados para percorrer o vetor várias vezes. O loop externo controla o número de passagens pelo vetor, enquanto o loop interno compara elementos adjacentes e realiza trocas se o elemento atual for menor que o próximo elemento.

Vamos examinar o bloco de código dentro do método:

for(int i = 0; i < v.length - 1; i++) {
    for(int j = 0; j < v.length - 1 - i; j++) {
        if(v[j] < v[j + 1]) {
            int aux = v[j];
            v[j] = v[j + 1];
            v[j + 1] = aux;
        }
    }
}

Análise:

A cada iteração do loop interno for, o código compara v[j] com v[j + 1]. Se v[j] for menor que v[j + 1], os valores são trocados. Este é um passo típico do algoritmo de ordenação por bolha (Bubble Sort), mas com uma inversão na comparação, o que resulta em uma ordenação em ordem decrescente.

Vamos agora justificar as alternativas:

A - Espelhamento do Vetor:

Esta alternativa está incorreta. O espelhamento de um vetor envolve reverter a ordem dos elementos, o que não é o caso aqui. O método claramente realiza várias trocas de elementos adjacentes para ordená-los.

B - Ordenação em Ordem Crescente:

Embora o algoritmo seja semelhante ao de ordenação por bolha, a comparação v[j] < v[j + 1] resulta em uma ordenação decrescente, não crescente. Portanto, esta alternativa está incorreta.

C - Ordenação em Ordem Decrescente:

Correta! Este algoritmo é uma variação do Bubble Sort que ordena os elementos em ordem decrescente, trocando elementos adjacentes quando o elemento atual é menor que o próximo.

D - Inserção de Valor no Meio do Vetor:

Esta alternativa está incorreta. A inserção de um valor no meio do vetor não envolve repetidas trocas de elementos adjacentes, mas sim a movimentação de elementos para abrir espaço para a nova inserção.

E - Inserção de Valor no Final do Vetor:

Esta alternativa também está incorreta. Inserir um valor no final de um vetor não requer a complexidade de dois laços aninhados e trocas de elementos. A operação é muito mais simples.

Em resumo, o método descrito na questão realiza uma ordenação do vetor em ordem decrescente, tornando a alternativa C - Ordenação em Ordem Decrescente a correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

GAB C

È um Bubble Sort. Para saber se é crescente ou decrescente, é só simular uma iteração

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo