Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — SELECON 2022

Algoritmos e Estrutura de DadosAlgoritmos
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:
  1. ATAB[K] <- TAB[K] + TAB[K+] TAB[K] <- TAB[K+1] - TAB[K] TAB[K+1] <- TAB[K] - TAB[K+1]
  2. BTAB[K] <- TAB[K] + TAB[K+l) TAB[K] <- TAB[K] - TAB[K+1] TAB[K+l] <- TAB[K] - TAB[K+l]
  3. CTAB[K] <-TAB[K]+ TAB[K+1] TAB[K+l] <-TAB[K]- TAB[K+l] TAB[K] <- TAB[K] - TAB[K+1]
  4. DTAB[K+1] <- TAB[K] + TAB[K+1] TAB[K] <- TAB[K] - TAB[K+1] TAB[K+1] <- TAB[K] - TAB[K+1]
Revelar gabarito e comentário

GabaritoC — TAB[K] <-TAB[K]+ TAB[K+1] TAB[K+l] <-TAB[K]- TAB[K+l] TAB[K] <- TAB[K] - TAB[K+1]

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 é:

  1. TAB[K] = TAB[K] + TAB[K+1]

  2. TAB[K+1] = TAB[K] - TAB[K+1]

  3. 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.

  1. 1A = A + B
  2. 2B = A - B
  3. 3A = A - B
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A sequência é:

  1. TAB[K] = TAB[K] + TAB[K+1]

  2. TAB[K] = TAB[K+1] - TAB[K]

  3. 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

  1. TAB[K] = TAB[K] + TAB[K+1]

  2. TAB[K] = TAB[K] - TAB[K+1]

  3. 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

  1. TAB[K] = TAB[K] + TAB[K+1] → TAB[K] = A + B

  2. TAB[K+1] = TAB[K] - TAB[K+1] → TAB[K+1] = (A+B) - B = A

  3. 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.

Alternativa D — ❌ Incorreta

  1. TAB[K+1] = TAB[K] + TAB[K+1] → TAB[K+1] = A + B

  2. TAB[K] = TAB[K] - TAB[K+1] → TAB[K] = A - (A+B) = -B

  3. TAB[K+1] = TAB[K] - TAB[K+1] → TAB[K+1] = (-B) - (A+B) = -A - 2B

Não ocorre troca correta.

PEGA ESSA DICA!

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.

Gabarito: letra C

Link permanente: /questoes/qq801380