🎯 Saiba o que estudar

Avançado com Treinador a partir de R$ 0,76/dia

Considere o código a seguir:public class HeapSort { public v...

Próximas questões
Com base no mesmo assunto
Q4197636 Algoritmos e Estrutura de Dados
Considere o código a seguir:
public class HeapSort {  public void heapSort(int arr[]) {  int n = arr.length;  for (int i = n / 2 - 1; i >= 0; i--) {  heapify(arr, n, i);  }  for (int i = n - 1; i > 0; i--) {  int temp = arr[0];  arr[0] = arr[i];  arr[i] = temp;  heapify(arr, i, 0);  }  }  void heapify(int arr[], int n, int i) {  int maior = i;  int esquerda = 2 * i + 1;  int direita = 2 * i + 2;  if (esquerda < n && arr[esquerda] > arr[maior]) {  maior = esquerda;  }  if (direita < n && arr[direita] > arr[maior]) {  maior = direita;  }  if (maior != i) {  int temp = arr[i];  arr[i] = arr[maior];  arr[maior] = temp;  heapify(arr, n, maior);  }  }  public static void main(String args[]) {  int arr[] = {12, 11, 13, 5, 6, 7};  int n = arr.length;  HeapSort heapSort = new HeapSort();  heapSort.heapSort(arr);  System.out.println("Array ordenado: ");  for (int i : arr) {  System.out.print(i + " ");  }  } }
Considerando o algoritmo apresentado, qual é a principal característica deste algoritmo de ordenação?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B

Fundamento decisivo: A decisão estava na identificação da estrutura usada pelo código: um heap binário armazenado em vetor, com filhos calculados por índices fixos e reorganização após as trocas.

Tema central: Característica do HeapSort
Análise das alternativas
A
Errada
Está errada porque descreve QuickSort. No código não há escolha de pivô nem particionamento do array em torno de um pivô; o procedimento central é construir e manter um heap.
B
Certa
A alternativa B está correta porque o algoritmo mostrado constrói e reajusta um heap máximo, isto é, uma árvore binária completa representada em array. O critério técnico que sustenta isso é a presença de heapify com os índices dos filhos esquerdo e direito (2*i+1 e 2*i+2), além da troca da raiz arr[0] com o último elemento da porção ativa do vetor, seguida de nova reorganização do heap.
C
Errada
Está errada porque a ordenação não se baseia em comparações sucessivas entre elementos adjacentes. As comparações relevantes no código são entre pai e filhos dentro do heap.
D
Errada
Está errada no contexto da pergunta porque, embora possa indicar uma propriedade de complexidade do HeapSort, não responde à principal característica identificadora do algoritmo apresentado. A evidência do código aponta para a estrutura heap, não para análise assintótica.
Pegadinha da questão
Trocar uma propriedade verdadeira do HeapSort, como a complexidade citada em D, pela característica principal pedida, que é o uso de heap.
Dica para questões semelhantes
  • Se o código usa filhos em 2*i+1 e 2*i+2 em um vetor, pense em heap binário.
  • Quando a questão pede característica principal, priorize a estrutura e o mecanismo central do código.

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

QConcurso ta de sacanagem... Olha como eles colocam a questão.

Clique para visualizar este comentário

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