Filtrar


Questões por página:

Observe o algoritmo escrito em pseudocódigo a seguir:  



Imagem associada para resolução da questão



Supondo que o índice inicial é a posição 1 e que foram digitados como entrada os números {7,9,2,1,6}, assinale a alternativa que indica corretamente a saída alcançada após a execução do algoritmo. 

Algoritmos de ordenação podem ser tão eficientes quanto possível. Uns mais eficientes, outros menos. A eficiência aqui pode estar relacionada ao uso de memória ou então ao tempo necessário para realizar a ordenação dos elementos. Dessa forma, qual o algoritmo que tem maior penalidade em termos de uso de memória, mas é, ao mesmo tempo, o que ordena mais rapidamente os dados em um vetor de elementos desordenado? Assinale a alternativa correta.
Um professor de Computação ministrou algumas aulas para alunos do 8º ano do Ensino Fundamental e verificou que eles conseguiram compreender o funcionamento de alguns algoritmos de ordenação. Diante disso, o professor solicitou que os estudantes produzissem vídeos explicando situações de uso de algoritmos de ordenação, a partir de alguns problemas que deveriam solucionar, tal como a organização, em ordem crescente, dos nomes dos alunos da própria sala de aula. Para isso, dividiu as turmas em grupos, e cada grupo propôs a implementação de um algoritmo.

Para a concretização da tarefa descrita, a proposta adequada nessa turma é a implementação do algoritmo de ordenação
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?
Analise os códigos a seguir:
Código 01 import java.util.Stack; public class Pilha {  public static void main(String[] args) {  Stack<Integer> pilha = new Stack<>();  pilha.push(5);  pilha.push(3);  pilha.push(8);  pilha.push(1);  Stack<Integer> pilhaOrdenada = new Stack<>();  while (!pilha.isEmpty()) {  int temp = pilha.pop();  while (!pilhaOrdenada.isEmpty() && temp > pilhaOrdenada.peek()) {  pilha.push(pilhaOrdenada.pop());  }  pilhaOrdenada.push(temp);  }  System.out.println("Pilha Ordenada: " + pilhaOrdenada);  } }
Código 02
import java.util.Stack; public class Pilha {  public static void main(String[] args) {  Stack<Integer> pilha = new Stack<>();  pilha.push(5);  pilha.push(3);  pilha.push(8);  pilha.push(1);  Stack<Integer> pilhaOrdenada = new Stack<>();  while (!pilha.isEmpty()) {  int temp = pilha.pop();  while (!pilhaOrdenada.isEmpty() && temp < pilhaOrdenada.peek()) {  pilha.push(pilhaOrdenada.pop());  }  pilhaOrdenada.push(temp);  }  System.out.println("Pilha Ordenada: " + pilhaOrdenada);  } }

Ao comparar os dois códigos apresentados, assinale a alternativa correta.