Questão nº 27

Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 27)

FGV2022Analista Judiciário - Análise de SistemasAnálise de Sistemas
Gabarito: Cver comentário ↓

Analise o código Java a seguir.

import java.util.Arrays;
class xSort {
  void xsort(int array[]) {
    int size = array.length;
    for (int step = 1; step < size; step++) {
      int key = array[step];
      int j = step - 1;
      while (j >= 0 && key < array[j]) {
        array[j + 1] = array[j];
        --j;
      }
      array[j + 1] = key;
   System.out.println(Arrays.toString(array));
    }
  }
  public static void main(String args[]) {
    int[] data = { 2, 5, 1, 4, 3 };
    xSort is = new xSort();
    is.xsort(data);
  }
}

Considere a seguinte saída no terminal após a execução do código Java apresentado:

[2, 5, 1, 4, 3]
[1, 2, 5, 4, 3]
[1, 2, 4, 5, 3]
[1, 2, 3, 4, 5]

O algoritmo de ordenação implementado no código Java apresentado é o:

Resposta comentada

Gabarito Alternativa C

Insertion Sort funciona como organizar cartas de baralho na mão: a cada passo, você pega uma carta (o key) e a desloca para trás, uma posição por vez, até encontrar o lugar certo entre as cartas já ordenadas à esquerda.

  • (A) Incorreta: Bubble Sort compara e troca elementos adjacentes repetidamente, "empurrando" o maior para o fim; aqui o código insere cada elemento na posição correta, não faz trocas sistemáticas de vizinhos.
  • (B) Incorreta: Selection Sort procura o menor elemento do restante e o troca com a posição atual; o código não faz busca de mínimo, apenas desloca elementos maiores que key para a direita.
  • (C) Correta: O laço externo começa em step = 1, guarda key = array[step], e o while desloca elementos maiores que key uma posição à direita (array[j+1] = array[j]), até achar a posição correta (array[j+1] = key). Isso é exatamente a definição de Insertion Sort.
  • (D) Incorreta: Merge Sort divide o array ao meio recursivamente e depois intercala; o código é iterativo, sem recursão ou divisão em subarrays.
  • (E) Incorreta: Quick Sort escolhe um pivô e particiona o array em menores e maiores que o pivô; o código não usa pivô nem particionamento, apenas insere cada elemento na ordem já ordenada.

Armadilha da banca: A saída impressa mostra o array após cada passo, o que pode parecer um "borbulhamento" de valores (como no Bubble Sort), mas a operação interna é de inserção — o key é removido e reinserido na posição correta, não há troca entre vizinhos. Quem olha só a saída e não o mecanismo cai na pegadinha.

Fonte: FGV TJDFT 2022 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho