Questões de Concurso Comentadas sobre algoritmos e estrutura de dados
Foram encontradas 2.729 questões
Analise o seguinte algoritmo de ordenação em JavaScript e marque a alternativa que apresenta a saída da console.
const numeros = [10, 2, 8, 1, 5];
numeros.sort((b, a) = > b - a);
console.log(numeros);
Código 01 import java.util.Stack; public class PilhaExemplo { public static void main(String[] args) { Stack<Integer> pilha = new Stack<>(); pilha.push(10); pilha.push(20); pilha.push(30); System.out.println("Elementos removidos da pilha:"); while (!pilha.isEmpty()) { System.out.println(pilha.pop()); } } } Código 02 import java.util.LinkedList; import java.util.Queue; public class FilaExemplo { public static void main(String[] args) { Queue<Integer> fila = new LinkedList<>(); fila.add(10); fila.add(20); fila.add(30); System.out.println("Elementos removidos da fila:"); while (!fila.isEmpty()) { System.out.println(fila.poll()); } } }
Com base nos dois trechos de código apresentados, assinale a alternativa correta ao comparar o código da pilha com o código da fila.
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?
Considere os dois pseudocódigos recursivos apresentados a seguir:
Código 01
função fibonacci(n: inteiro) -> inteiro:
se n <= 1 então
retornar n
senão
retornar fibonacci(n-1) + fibonacci(n-2)
fim se
Código 02
função fatorial(n: inteiro) -> inteiro:
se n <= 1 então
retornar 1
senão
retornar n * fatorial(n-1)
fim se
A partir da análise dos códigos apresentados, assinale a alternativa que apresenta a principal diferença entre os pseudocódigos recursivos 1 e 2 em termos de seu propósito e operação.
Considere o seguinte pseudocódigo:
// Pseudocódigo para calcular a média de duas notas
// ??? (1)
nota1, nota2, media: real
// ??? (2)
escrever("Digite a primeira nota: ")
ler(nota1)
escrever("Digite a segunda nota: ")
ler(nota2)
// ??? (3)
media <- (nota1 + nota2) / 2
// ??? (4)
escrever("A média das duas notas é: ", media)
Com base no pseudocódigo, assinale a alternativa que apresenta corretamente cada elemento (// ???) a sua respectiva parte no pseudocódigo.
Considere a seguinte função recursiva em pseudocódigo:
função fatorial(n: inteiro) -> inteiro:
se n = 0 ou n = 1 então
retornar 1
senão
retornar n * fatorial(n - 1)
fim se
Com base na análise da função, assinale a alternativa que apresenta o resultado da chamada da função fatorial(5).
Código 01 contador <- 1 enquanto contador <= 5 faça escrever("Iteração ", contador) contador <- contador + 1 fim enquanto
Código 02 para contador de 1 até 5 passo 1 faça escrever("Iteração ", contador) fim para
A partir da análise dos dois trechos de pseudocódigo apresentados, assinale a alternativa que apresenta a principal diferença entre as estruturas de repetição Enquanto e Para, conforme exemplificado nos pseudocódigos.
// Pseudocódigo para calcular a média de três números escrever("Digite o primeiro número: ") ler(primeiroNumero) escrever("Digite o segundo número: ") ler(segundoNumero) escrever("Digite o terceiro número: ") ler(terceiroNumero) soma <- primeiroNumero + segundoNumero + terceiroNumero media <- soma / 3 escrever("A média dos três números é: ", media)
Com base no trecho código apresentado, assinale a alternativa que apresenta a finalidade da parte do pseudocódigo que contém as linhas a seguir.
escrever("Digite o primeiro número: ") ler(primeiroNumero) escrever("Digite o segundo número: ") ler(segundoNumero) escrever("Digite o terceiro número: ") ler(terceiroNumero)
• Pensamento Computacional — envolve compreender e automatizar problemas e suas soluções, de forma metódica e sistemática.
• Mundo Digital — envolve as formas de processar e distribuir a informação de maneira segura e confiável.
• Cultura Digital — envolve uma participação mais consciente e democrática por meio das tecnologias digitais.
BRASIL. Ministério da Educação. Base Nacional Comum Curricular. Brasília: MEC, 2017 (adaptado).
Considerando essas informações, assinale a opção que indica uma situação cotidiana que poderia ser explicada com o ensino do eixo Pensamento Computacional.
Para a concretização da tarefa descrita, a proposta adequada nessa turma é a implementação do algoritmo de ordenação
Considerando as características de cada ambiente, uma estratégia adequada para o professor abordar o mesmo conteúdo, de forma eficaz, em ambas as escolas é,
( ) Uma pilha é uma lista linear na qual a inserção de elementos ocorre em uma extremidade. chamada de fim da pilha, e a remoção ocorre na outra extremidade, chamada de frente da pilha. Isso segue a abordagem First In, First Out (FIFO), onde o primeiro elemento inserido é o primeiro a ser removido.
( ) Uma fila é uma lista linear na qual a inserção e a remoção de elementos ocorrem apenas em uma extremidade, chamada de topo da fila. Isso segue a abordagem Last In, First Out (LIFO), onde o último elemento inserido é o primeiro a ser removido.
( ) Uma lista estática é uma estrutura de dados na qual cada elemento, além de armazenar seu valor, contém uma referência ao próximo elemento na lista. Isso permite a construção de listas de tamanho variável. onde os elementos não precisam estar necessariamente em posições contíguas de memória.
Qual alternativa preenche, CORRETAMENTE, os parênteses, na ordem em que aparecem?
Analise as seguintes afirmações sobre a propriedade da Árvore Binária de Busca:
I. A operação de busca em uma BST é eficiente devido à estrutura ordenada.
II. Inserir um novo valor em uma BST sempre resulta em uma árvore válida.
III. Excluir um nó folha em uma BST pode resultar em uma árvore inválida.
IV. Uma BST pode ser utilizada para armazenar dados não ordenados.
Estão corretas as afirmações:
I Listas são estruturas de dados mais simples, que podem ser implementadas de forma dinâmica.
II Pilhas são um tipo de Lista, em que o elemento a ser removido é sempre o último inserido.
III Matrizes são estruturas de dados sempre definidas com o número de linha igual ao número de colunas.
IV Árvores são um tipo especial de matriz, em que cada linha possui o dobro de elementos da linha anterior.
Das afirmações, estão corretas