Imagem de fundo

Considere o código a seguir:public class HeapSort {public void heapSort(int arr[]) {int...

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?


A

Utiliza um pivô para dividir o array em partições.


B

Usa uma árvore binária completa (heap) para realizar a ordenação.


C

A ordenação é baseada na comparação de elementos adjacentes.


D

Possui complexidade de tempo O(n log n) no melhor caso.