Questões de Concurso Comentadas sobre algoritmos e estrutura de dados
Foram encontradas 2.112 questões
N: INTEIRO V: VETOR [0..N-1] de LISTA<MENSAGEM> Algoritmo Adicionar (M: MENSAGEM) H <- 0 Para i de 0 até Tamanho (M.email) - 1 H <- H + Ord (M.email[i]) Fim Para H <- H Mod N V[H].Incluir(M) Fim Algoritmo
O hash é dado pelo resto da divisão entre a soma dos códigos ASCII do email e o tamanho do vetor de listas. Para que Beatriz obtenha a melhor distribuição das mensagens nas listas:
Para K de 2 até n faça:
X <- V[K]
W <- (K – 1)
Enquanto W > 0 e V[W] > X faça:
V[W+1] <- V[W]
W <- (W-1)
Fim Enquanto
V[W+1] <- X
Fim Para
O algoritmo utilizado por Pedro foi o:
def hanoi(n, o, d, a):
if n==1:
print("D1 de "+o+" p/ "+d)
else:
hanoi(n-1, o, a, d)
print("D"+str(n)+" de "+o+" p/ "+d)
hanoi(n-1, a, d, o)
A complexidade desse algoritmo no pior caso é:
Função X (J: inteiro, K: inteiro)
Início
Se J < K Então
Retorne J
Senão
Retorne X (J-K, K)
Fim
Considerando o domínio dos inteiros positivos, a função terá como resultado o(a):
Sabendo que os caracteres C, V e M correspondem, respectivamente, aos números 67, 86 e 77, a AHash retornará para a chave “CVM”:
José deve escolher o algoritmo:
Joaquim escolheu o algoritmo de ordenação:
A equipe responsável pela implementação do projeto resolveu utilizar um modelo de linguagem recente para representar o máximo possível de informação contida num e-mail em um vetor de dimensão 768. Entretanto, depararam-se com o seguinte problema: as distâncias entre os vetores se mostraram muito pequenas, tornando o agrupamento por diversos algoritmos muito pouco significativo.
Com esse último problema em mente, a sequência mais apropriada de algoritmos a ser aplicada sobre os vetores, de forma a obter um agrupamento significativo dos e-mails, é:
O algoritmo representado pelo referido fluxograma que deve ser empregado para a realização da tarefa de Pedro é o:
As estruturas de dados utilizadas em programação determinam como as informações serão armazenadas, organizadas e acessadas, sendo uma parte importante no projeto de software, com impacto no seu desempenho e eficiência.
Sobre estruturas de dados lineares, analise as afirmativas a seguir.
I. Para realizar uma busca por um elemento em uma lista simplesmente encadeada pode-se começar a busca pelo início ou fim da lista.
II. Listas duplamente encadeadas não permitem a exclusão de elementos que não sejam o último ou o primeiro elemento da lista.
III. Uma lista circular pode ser simplesmente encadeada ou duplamente encadeada.
Está correto o que se afirma em
A Notação Polonesa Reversa (RPN, do inglês Reverse Polish Notation) foi desenvolvida como uma forma de escrever expressões lógicas e aritméticas sem usar parênteses. Essa notação ganhou popularidade ao ser implementada em calculadoras científicas, onde permite reduzir a quantidade de acionamento de teclas no cálculo de expressões.
Quando uma calculadora opera no modo RPN, os operandos são inseridos previamente em uma estrutura de dados e, ao utilizar-se um operador (soma, subtração, ...), a quantidade de operandos necessários são retirados da estrutura na ordem inversa da inserção e, após o cálculo da operação, o resultado é inserido na estrutura de dados. Assim, por exemplo, caso se deseje calcular a expressão A + (B – C)*D em uma calculadora operando no modo RPN, pode-se seguir o seguinte procedimento:
• Insere A
• Insere B
• Insere C
• Realiza a operação de subtração
• Insere D
• Realiza a operação de multiplicação
• Realiza a operação de soma
De acordo com a descrição acima, assinale a opção que indica a estrutura de dados que melhor caracteriza a utilizada pelo modo RPN para armazenar os operandos e resultados.
Com relação à formulação de algoritmos e suas formas de representação, analise as afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.
( ) O refinamento passo a passo de cima para baixo é um processo para refinar o pseudocódigo, mantendo uma representação completa do programa durante cada refinamento.
( ) A técnica conhecida como “repetição controlada por contador” é muitas vezes denominada como “repetição definida”, porque o número de repetições é conhecido antes do laço começar a ser executado.
( ) O fluxograma é uma representação gráfica de um algoritmo. É desenhado com alguns símbolos especiais, como retângulos, elipses, círculos e losangos, conectados por setas.
As afirmativas são, respectivamente,
Nesse contexto, analise as afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.
( ) Tanto as Árvores-B+ quanto as Árvores-R são árvores balanceadas. ( ) Em uma Árvore-B+, uma busca por um valor de chave iniciada pelo nó raiz percorre apenas um único caminho até um nó folha (ou terminal). ( ) Em uma Árvore-R, uma busca iniciada pelo nó raiz pode exigir a verificação de mais de uma sub-árvore desse nó raiz para selecionar os itens que satisfazem o critério de busca. ( ) Uma quad-tree sempre é uma árvore balanceada. ( ) Uma das desvantagens de um Árvore-k-d (k-d-tree) é que ela é uma estrutura sensível à ordem nos quais os pontos são inseridos.
As afirmativas são, respectivamente,
I. O MD5 não é propriamente um modelo criptográfico, existindo limitações até mesmo de segurança. Seu hash é constituído por uma estrutura hexadecimal de 32 caracteres.
II. O AES (Advanced Encryption Standard) é um algoritmo de criptografia, porém é unidirecional, não permitindo a descriptografia.
III. O RSA (Rivest-Shamir-Adleman) é um algoritmo de criptografia assimétrica bidirecional.
Conforme as assertivas, responda a alternativa verdadeira:
1. (__) Vetores (arrays bidimensionais) e matrizes (arrays unidimensionais) são estruturas de dados que permitem armazenar e manipular coleções de dados de forma eficiente.
2. (__) Fluxogramas são representações gráficas de algoritmos, utilizando símbolos padronizados para denotar diferentes tipos de instruções ou operações (como processos, decisões, entrada/saída de dados, entre outros).
3. (__) Ao utilizar uma sintaxe simplificada e próxima da língua nativa do aprendiz, o Portugol permite uma compreensão mais intuitiva dos conceitos fundamentais de programação, como variáveis, estruturas de controle e lógica de programação.
A sequência CORRETA é:
I - É estável, ou seja, não altera a ordem relativa dos elementos que possuem o mesmo valor de chave de ordenação.
II - Percorre repetidamente a lista a ser ordenada, comparando o elemento corrente com o seguinte e, se necessário, trocando os seus valores.
III - Divide a lista a ser ordenada em duas partes: uma sublista ordenada de elementos, que é construída da esquerda para a direita (ordem crescente), à frente de uma sublista referente aos elementos não ordenados, sendo que, inicialmente, a primeira lista é vazia, enquanto a segunda contém todos os elementos a serem ordenados.
Essas características se aplicam, respectivamente, aos seguintes métodos de ordenação: