Apresente, em pseudocódigo resumido, o algoritmo in-place que rotaciona à direita um vetor A[0..n-1] por k…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Apresente, em pseudocódigo resumido, o algoritmo in-place que rotaciona à direita um vetor A[0..n-1] por k posições usando três reversões.
- A) k = k mod n; reverse(A,0,n-1); reverse(A,0,k-1); reverse(A,k,n-1)
- B) k = n - k; reverse(A, 0, n-1);
- C) rotate(A, k);
- D) reverse(A, 0, k-1); reverse(A, k, n-1);
- E) reverse(A, k, n-1); reverse(A, 0, n-1);
✅ Resposta correta: alternativa A
Resolução passo a passo
- Ao rotacionar um vetor A[0..n-1] à direita por k posições, os últimos k elementos passam para o início, e os demais deslocam-se para a direita. Passo 2: Um caminho clássico é reverter o vetor inteiro, o que coloca os últimos k elementos no início, mas com a ordem interna invertida. Passo 3: Depois, reverte-se o bloco dos primeiros k elementos (0 a k-1) e o bloco restante (k a n-1), restaurando a ordem interna de cada parte. Passo 4: Antes de tudo, k = k mod n evita que k seja maior ou igual a n, caso em que a rotação seria cíclica e não faria sentido. Passo 5: Por isso a alternativa A está correta, pois executa exatamente essa sequência: ajuste de k, reversão total, reversão de 0 a k-1 e reversão de k a n-1. Passo 6: A alternativa B está errada porque faz apenas uma reversão e calcula k = n - k, o que não produz a rotação à direita. Passo 7: A alternativa C está errada porque apenas chama uma função rotate, sem mostrar o algoritmo de três reversões pedido. Passo 8: A alternativa D está errada porque reverte as duas partes sem antes reverter o vetor inteiro, o que não gera a rotação. Passo 9: A alternativa E está errada porque inverte a ordem das operações e não ajusta k, resultando em um vetor diferente do esperado. Passo 10: Conclusão: o gabarito oficial A está correto e coincide com a resolução independente.
💡 Dica: Considere as etapas de reversão do vetor.
Alternativa por alternativa
A sequência de três reversões (toda a array, prefixo de tamanho k, sufixo restante) reordena os elementos como uma rotação à direita. Opera em O(n) tempo e O(1) espaço extra.
Acredita que basta ajustar k para n - k e inverter o vetor uma única vez para obter a rotação, ignorando que a rotação exige reordenar os blocos separadamente.
Por que engana: O aluno pode confundir a ordem das reversões, resultando em uma rotação incorreta do vetor.
Interpreta a questão como pedido de nomear uma operação pronta de rotação, em vez de apresentar o algoritmo em pseudocódigo com três reversões.
Supõe que reverter apenas as duas partes (0 a k-1 e k a n-1) já rotaciona o vetor, esquecendo a reversão do vetor inteiro que inverte a posição dos blocos.
Inverte a ordem correta das operações, reverte primeiro o bloco final e depois o vetor inteiro, sem a reversão do bloco inicial, e não ajusta k.
Raio-X da questão
algoritmo de rotação
avaliacao
algoritmo de rotação
Revisar algoritmos de manipulação de vetores e suas operações.
O aluno pode confundir a ordem das reversões, resultando em uma rotação incorreta do vetor.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Escreva um algoritmo em pseudocódigo que receba uma matriz de registros 'inventario' (linhas = prateleiras, colunas =…
- Projete um algoritmo in-place, em pseudocódigo, que receba um vetor A de n números distintos e um inteiro k (1 = k = n)…
- Projete em pseudocódigo uma função recursiva rotacionar_direita(L, k) que recebe uma lista L e um inteiro k = 0 e…
- Projete em pseudocódigo um algoritmo que remova, in-place, todas as ocorrências de um valor v em um vetor A de…
- Projete um algoritmo em pseudocódigo que, dado um vetor A[1..n] de inteiros e um inteiro k (1 = k = n), calcule a maior…
- Descreva um algoritmo em pseudocódigo que, dada uma matriz quadrada A[n][n] de inteiros e um inteiro k>0, percorra os…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
