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
de inteiros de tamanho arbitrário (supondo
) 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 , trocar
com
;
— se , trocar
com
;
— se , trocar
com
.
Depois dessas três etapas, os valores em estarão em ordem crescente.
— se
— se
— se
Depois dessas três etapas, os valores em
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]