Questões de Concurso Sobre algoritmos e estrutura de dados
Foram encontradas 3.260 questões
• a expressão lógica “x % y == 0” é verdadeira se o número “x” for divisível pelo número “y” e falsaem caso contrário;
• o comando de repetição “para-cada (n em v) {...}” executa os comandos dentro do blocodelimitado por “{” e por “}”, onde o número de repetições é igual à quantidade de númerospresentes no array “v” e, em cada repetição, o valor da variável “n” será um dos números do array “v”. Exemplo: no comando para-cada (n em [5, 2, 8]) { ... } o valor de “n” na primeirarepetição será 5, na segunda repetição será 2 e na terceira e última repetição será 8;
• o comando de atribuição “=” atribui um valor a uma variável. Exemplo: o comando “a = b + 1”define que o valor da variável “a” será o valor da expressão “b + 1”, ou seja, será o valor davariável “b” mais 1;
• o comando de seleção “se (expressão lógica) { ... }” executa os comandos dentro do blocodelimitado por “{” e por “}” caso a expressão lógica seja verdadeira.
Considere o seguinte algoritmo:
v = [8, 3, 10, 9]
a = 0
b = 5
para-cada (n em v) {
se (n % b == 0) {
a = a + n
}
}
Assinale a alternativa que indica CORRETAMENTE o valor que será atribuído à variável “b”após a execução do algoritmo acima.
Muitos algoritmos de ordenação de números armazenados em array necessitam fazer comparações (verificar se um número é menor, igual ou maior que outro número) e trocas (mudar a posição dos números dentro do array).
Considere o problema de ordenar um array contendo N números inteiros. Se for utilizado o Método da Bolha, qual é o menor número possível de trocas para ordenar completamente o array?
Considere o código-fonte que segue:
int f1(int n) {
if (n == 0 II n == 1) return n;
else return (2 * f1(n-1) + 3 * f1(n-2)); }
int f2(int n) {
int a; int[] X = new int [n];
int[] X = new int [n]; int[] Z = new int [n];
X [0] = Y [0] = Z [0] = 0;
X [1] = 1; Y [1] = 2; Z [1] = 3;
for (a = 2; a <= n; a ++) {
X [a] = Y [a-1] + Z [a-2];
Y [a] = 2 * X [a]; Z [a] = 3 * X [a]; }
return X [n]; }
Qual é o tempo de execução de f1(n) e f2(n),
respectivamente?
I f(n) = Θ(g(n)) e g(n) = Θ(b(n)), logo f(n) = Θ(b(n)) II f(n) = O(g(n)) se e somente se g(n) = Ω(f(n)) III f(n) = O(g(n)) se e somente se g(n) = O(f(n)) IV f(n) = O(g(n)) e g(n) = O(b(n)), logo f(n) = Ω(b(n))
Em relação ao exposto, estão corretas as afirmativas
Considere a representação da árvore binária abaixo.
Sobre essa representação é correto afirmar que
Analise os dois algoritmos a seguir:
Em relação aos algoritmos expostos, é correto afirmar que
- inserção: inserir um novo número em um conjunto; - seleção: encontrar um elemento máximo (ou mínimo) de um conjunto; - remoção: extrair um elemento máximo (ou mínimo) de conjunto.
Uma maneira eficiente de implementar uma fila de prioridades, obtendo tempo proporcional a O(1) na seleção e O(log2 n) na inserção e remoção é através da TAD
Considere a sub-rotina abaixo:
1. Programa
2. Declare X, Y e Z numérico
3. Leia X
4. Leia Y
5. Z:= (X + Y) x Y
6. Escreva Z
7. Fim programa
Analisando o programa acima, e supondo que o valor fornecido para “X” na terceira linha seja 3 e o valor fornecido para Y na quarta linha seja 4, pode-se afirmar que o valor da variável “Z” na sexta linha é:
I. Vetores.
II. Listas.
III. Filas.
Quais estão corretas?
Analise o fluxograma a seguir.
Assinale a alternativa que apresenta, para as variáveis
i e N, valores que ativam o caminho B.
O algoritmo apresentado a seguir, na forma de uma pseudolinguagem, deve ser utilizado para responder à questão. Assuma que os valores presentes lidos inicialmente para os vetores a e b tenham sido os seguintes:
No programa apresentado, suponha que o comando:
Com este novo comando, ao final da execução do programa, quando comparado com a execução original,
O algoritmo apresentado a seguir, na forma de uma pseudolinguagem, deve ser utilizado para responder à questão. Assuma que os valores presentes lidos inicialmente para os vetores a e b tenham sido os seguintes:
Após a execução do programa, os valores de SA e SB
serão, respectivamente,