Descreva um algoritmo que coloca os primeiros três termos de uma seqüência de números inteiros de comprimento arbitrário em ordem crescente.

Passo 1

O enunciado pede um algoritmo que receba uma sequência S de inteiros de tamanho arbitrário (supondo n\ge3) e deixe apenas os três primeiros elementos em ordem crescente, sem alterar a ordem dos demais elementos.

Passo 2

Para ordenar só três elementos podemos usar uma versão reduzida do método de “trocas sucessivas” (como no bubble sort). A ideia é comparar pares dos primeiros três elementos e, sempre que um par estiver fora de ordem, executar uma troca.

Passo 3

Precisamos das seguintes comparações e possíveis trocas:
— se S[1]>S[2], trocar S[1] com S[2];
— se S[1]>S[3], trocar S[1] com S[3];
— se S[2]>S[3], trocar S[2] com S[3].
Depois dessas três etapas, os valores em S[1],S[2],S[3] estarão em ordem crescente.

Passo 4

Juntando tudo, escrevemos o pseudocódigo do algoritmo, garantindo que somente as posições 1, 2 e 3 sejam afetadas:

Resposta

Algoritmo Ordena3(S)
Require: S é uma sequência de inteiros com pelo menos três posições
Ensure: as posições S[1], S[2] e S[3] ficam em ordem crescente

se S[1] > S[2] então
 troca os valores de S[1] e S[2]
se S[1] > S[3] então
 troca os valores de S[1] e S[3]
se S[2] > S[3] então
 troca os valores de S[2] e S[3]

Exercícios de Livros Relacionados