Questões de Concurso
Sobre algoritmos em algoritmos e estrutura de dados
Foram encontradas 2.344 questões
(_) Uma das operações básicas sobre um registro de um arquivo é a inclusão.
(_) O merge corresponde à intercalação dos registros de um arquivo.
(_) Uma vez concluída a operação de inclusão do arquivo, não é possível praticar sua exclusão.
Assinale a alternativa que apresenta o valor armazenado em A ao final da execução desse algoritmo, considerando que os valores lidos para r1 e r2 tenham sido, respectivamente, 2 e 3.
Analise o programa a seguir escrito em pseudolinguagem (Português Estruturado).

A variável K ao final da execução desse programa estará com o valor
Considere o seguinte programa, escrito em pseudolinguagem (Português Estruturado).

Ao término da execução desse programa, o valor presente da variável Soma será igual a:
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?
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.
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)
I.O algoritmo Bubble Sort percorre a lista múltiplas vezes, trocando elementos adjacentes de posição até que o conjunto esteja ordenado.
II.A busca binária exige que o conjunto de dados esteja previamente ordenado para que possa realizar divisões sucessivas do espaço de busca.
III.O Quick Sort baseia-se na técnica de divisão e conquista, utilizando um elemento pivô para particionar o vetor em subvetores menores.
Está CORRETO o que se afirma em:
(__)As expressões que utilizam o operador de módulo resultam no resto da divisão inteira entre dois valores numéricos.
(__)A concatenação de strings em expressões algorítmicas altera o valor numérico dos caracteres de acordo com a tabela Unicode.
(__)O uso de parênteses em expressões complexas permite ao desenvolvedor alterar a ordem natural de execução das operações.
(__)Expressões aritméticas que envolvem números inteiros e reais resultam em um valor real devido à promoção implícita de tipos.
Após análise, assinale a alternativa que apresenta a sequência correta dos itens acima, de cima para baixo:
I.A estrutura de seleção múltipla (caso-seja) permite testar o valor de uma variável contra diversos valores constantes de forma organizada.
II.O laço de repetição "enquanto" realiza a verificação da condição de parada antes da execução do bloco de comandos interno.
III.A estrutura "para" é indicada para situações onde o número de iterações é desconhecido e depende de um evento externo ao laço.
Está CORRETO o que se afirma em:
I. O tempo de execução no pior caso do algoritmo Merge-Sort é Θ(n log n).
PORQUE
II. O procedimento MERGE executa Θ(n) operações ao combinar as duas metades, gerando a recorrência T(n)=2T(n/2)+Θ(n), cuja solução é Θ(n log n).
Em hashing com encadeamento (separate chaining), armazenando n chaves em uma tabela de tamanho m, o fator de carga α é definido por α = _______________. Para uma função hash que aproxima hashing uniforme simples, o tempo médio esperado de uma operação de busca bem-sucedida é O(1 + ________________).
A sequência que preenche corretamente as lacunas é:
I. Um percurso em ordem (INORDER-TREE-WALK) em T imprime (ou produz) as chaves em ordem crescente (não decrescente).
PORQUE
II. O tempo de execução do procedimento INORDER-TREE-WALK é O(n2), pois sua complexidade não depende apenas do número total de nós processados.