Questão de Algoritmos e Estrutura de Dados — Algoritmos — SELECON 2022
Algoritmos e Estrutura de Dados›Algoritmos
Código
qq801380
Banca
SELECON
Órgão
IF-RJ
Ano
2022
Nível
Superior
Cargo
Analista de Tecnologia da Informação
O algoritmo ordena 13 números em ordem crescente, com o auxílio de uma variável auxiliar AUX.procedimento ORDENARIniciorepitatroca<- VERDADEIROpara K de 1 ate 12 facase TAB[K) > TAB[K+ 1] entaoAUX <- TAB[K)TAB[K] <-TAB[K+1]TAB[K+1] <- AUXTROCA<- FALSOfimsefimparaate TROCA= VERDADEIROfimrepitafimprocedimentoUma solução com o mesmo resultado, mas sem o uso dessa variável auxiliar AUX, é possível por meio da substituição das linhas de código da figuraAOX <- TAB[K]TAB[K] <- TAB[K+1]TAB[K<+1] <- AUXpor:
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Troca de valores sem variável auxiliar em algoritmos de ordenação
Gabarito: letra C. A sequência correta de operações aritméticas para trocar os elementos TAB[K] e TAB[K+1] sem usar uma variável temporária é:
TAB[K] = TAB[K] + TAB[K+1]
TAB[K+1] = TAB[K] - TAB[K+1]
TAB[K] = TAB[K] - TAB[K+1]
Essa sequência está presente na alternativa C, que executa exatamente esses passos.
O algoritmo original é o Bubble Sort, que percorre o vetor comparando elementos adjacentes e os troca quando estão na ordem errada, repetindo até que nenhuma troca seja necessária. A variável AUX é usada para preservar um dos valores durante a troca. A técnica de troca sem variável auxiliar, usando apenas soma e subtração, é um truque clássico, mas deve ser aplicada na ordem correta para não corromper os dados.
1A = A + B
2B = A - B
3A = A - B
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A sequência é:
TAB[K] = TAB[K] + TAB[K+1]
TAB[K] = TAB[K+1] - TAB[K]
TAB[K+1] = TAB[K] - TAB[K+1]
Após o primeiro passo, TAB[K] tem a soma. No segundo, subtrai-se TAB[K] (agora a soma) de TAB[K+1], resultando em valor negativo, e no terceiro o resultado é distorcido. Não ocorre a troca correta.
Alternativa B — ❌ Incorreta
TAB[K] = TAB[K] + TAB[K+1]
TAB[K] = TAB[K] - TAB[K+1]
TAB[K+1] = TAB[K] - TAB[K+1]
A segunda linha sobrescreve TAB[K] com o valor original (volta atrás), e a terceira linha faz TAB[K+1] receber (A - B), que não é a troca desejada.
Alternativa C — ✅ Correta ⟵ GABARITO
TAB[K] = TAB[K] + TAB[K+1] → TAB[K] = A + B
TAB[K+1] = TAB[K] - TAB[K+1] → TAB[K+1] = (A+B) - B = A
TAB[K] = TAB[K] - TAB[K+1] → TAB[K] = (A+B) - A = B
Resultado: TAB[K] = B (original de TAB[K+1]) e TAB[K+1] = A (original de TAB[K]). Troca realizada com sucesso.
Para memorizar a sequência, lembre-se de que a primeira operação acumula a soma, a segunda extrai o primeiro valor original (usando o segundo original) e a terceira extrai o segundo valor original (usando a soma e o primeiro). A ordem das atribuições é fundamental: primeiro no elemento que recebe a soma, depois no outro, e por fim no primeiro novamente.