Questões de Concurso Sobre algoritmos e estrutura de dados
Foram encontradas 3.784 questões
O algoritmo de ordenação denominado quicksort é baseado na partição do arquivo em duas partes, a partir de um elemento arbitrariamente escolhido que termina localizado na sua posição final. Cada uma das partes é então ordenada independentemente, aplicando-se o algoritmo recursivamente, até que todo o arquivo esteja ordenado.
Analise as mudanças na disposição dos elementos de um vetor com 10 elementos que é submetido ao processo de partição.

Considere uma tabela hash com as seguintes características:
1. As chaves são as letras A,B,C,D,H.J,K,M,N,O,P,R,S,T,U;
2. A tabela possui 11 posições, referenciadas pelos índices de 0 até 10;
3. A função de hash é definida como hash(x)=posição(x) mod 11 onde x é a chave, e posição(x) é a posição da chave no alfabeto ABCDEFGHIJKLMNOPQRSTUVWXYZ, tal que posição(“A”) retorna 1 e posição(“Z”) retorna 26.
Analise as afirmativas sobre a tabela após seu preenchimento com as chaves listadas acima.
I. Nenhuma chave foi alocada à posição 6;
II. A chave “K” foi alocada à posição zero;
III. As chaves “B” e “N” colidiram na posição 3;
IV.Apenas uma letra foi alocada à posição 9.
Está correto somente o que se afirma em:
Assinale o número máximo de acessos a R necessários para encontrar uma determinada chave.

Assinale a opção que apresenta a saída impressa resultante da execução do código anteriormente apresentado.

A quantidade de grau total do grafo na figura é
inteiro soma, i
soma - 0
para i de 100 até 200 faça
se i mod 2 = 0 então
soma - soma + i
fimse
fimpara
escreva soma
fimalgoritmo
Considerando o algoritmo mostrado, é correto afirmar que, com relação à execução e ao valor impresso, esse algoritmo
public static void main(String args[]) {
System.out.println("Saida:");
xyz(5, 0);
}
static int xyz(int n, int m) {
int i;
for (i = 0; i < m; ++i) {
System.out.println(" " + i + " ");
}
System.out.println("xyz(" + n + "," + m + ")");
if (n == 1) {
return 1;
}
if (n % 2 == 0) {
return xyz(n / 2, m + 1);
}
return xyz((n - 1) / 2, m + 1) + xyz((n + 1) / 2, m + 1);
}
}
O resultado do código apresentado é
Considere o algoritmo a seguir, apresentado na forma de uma pseudolinguagem e que implementa uma certa funcionalidade, para responder às questões de números 50 e 51.
Início
- as [
- asd Tipo TM = matriz[1..4, 1..4] de inteiros;
- asdas Inteiro: c, i, j, k;
- asda TM: Mat;
- asdas c ← 1;
- asdasd Para i de 1 até 4 faça
- asd[
- as Se (c é ímpar)
- asd[
- asas Então
- asd[ c ← c + 3*i;
- asd Para j de 1 até 4 faça
- ad[
- asdMat[i,j] ← i + j + c;
- a]
- ,]
- asas Senão
- ,[
- asasddc ← c + 2*i + 1
- asdasd; Para k de 1 até 4 faça
- [
- asdasdiiaMat[i,k] ← i + k - c;
- aaaad]
- aasa]
- aaa]
- ii,,]
- ,]
- Fim.
Considere a seguinte estrutura de dados do tipo pilha.
Considerando as operações usuais de empilhamento (PUSH) e desempilhamento (POP), com suas funcionalidades padrão, foram realizadas as seguintes operações, expressas na forma de uma pseudolinguagem:
X ← 10;
Y ← 20;
POP(Y);
PUSH(X);
POP(Y);
PUSH(Y);
PUSH(X);
Após a execução dessa sequência de operações, o novo conteúdo da pilha será, da base para o topo:
Considere o algoritmo a seguir, apresentado na forma de uma pseudolinguagem e que implementa uma certa funcionalidade, para responder às questões de números 50 e 51.
Início
- as [
- asd Tipo TM = matriz[1..4, 1..4] de inteiros;
- asdas Inteiro: c, i, j, k;
- asda TM: Mat;
- asdas c ← 1;
- asdasd Para i de 1 até 4 faça
- asd[
- as Se (c é ímpar)
- asd[
- asas Então
- asd[ c ← c + 3*i;
- asd Para j de 1 até 4 faça
- ad[
- asdMat[i,j] ← i + j + c;
- a]
- ,]
- asas Senão
- ,[
- asasddc ← c + 2*i + 1
- asdasd; Para k de 1 até 4 faça
- [
- asdasdiiaMat[i,k] ← i + k - c;
- aaaad]
- aasa]
- aaa]
- ii,,]
- ,]
- Fim.
Considere a seguinte estrutura de dados do tipo árvore.
Trata-se de uma árvore