Questão nº 27
Questão de Análise de Sistemas · FGV TJDFT 2022 (nº 27)
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:
- ABubble Sort;
- BSelection Sort;
- CInsertion Sort; (alternativa correta)
- DMerge Sort;
- EQuick Sort.
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
keypara a direita. - (C) Correta: O laço externo começa em
step = 1, guardakey = array[step], e owhiledesloca elementos maiores quekeyuma 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.