Questões de Concurso Sobre algoritmos e estrutura de dados
Foram encontradas 3.835 questões

Marque a alternativa que apresenta o conteúdo dos nodos visitados na sequência correta, ao se
executar o algoritmo encontreElemento(82) na árvore de pesquisa binária da figura abaixo.
Considerando que “T” assuma tais valores: T=47, 19, 59, 35, 56, 2, 17, 42, 14, 23, 67, 32, 16. Ao final obteremos a saída:
Julgue o item seguinte, a respeito de estruturas em programação e de arquiteturas de bancos de dados.
No algoritmo denominado busca em amplitude, a árvore
é percorrida visitando-se todos os nós de um ramo até se
atingir os nós terminais, repetindo-se o processo em cada um
dos ramos.
Os números que serão escritos são
a = 100 // atribui o valor 100 à variável “a”
f(a + 1) // invoca a execução da função “f”
b = a // atribui o valor da variável “a” à variável “b”
def f(a) { // define a função “f”
a = a + 10
}
Assinale a alternativa CORRETA.
• 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?