Python - Três números em ordem decrescente

"Faça um Programa que leia três números e mostre-os em ordem decrescente."



Invertendo dois a dois

O grande segredo desse tipo de algoritmo, é comparar e trocar valor das variáveis, duas a duas.

Por exemplo, vamos pegar a sequência: 10 - 20 - 30
Primeira posição: 10
Segunda posição: 20
Terceira posição: 30

Primeiro vamos comparar a segunda posição com a terceira.
A terceira posição é maior que a segunda? Se for, inverte.
Agora fica: 10 - 30 - 20

Pronto, colocamos em ordem decrescente as duas últimas posições.
Agora vamos comparar a primeira posição com a segunda.

A segunda posição tem um valor maior (30) que a primeira (10)?
Sim! Tem! Então inverte essas duas.
Agora fica: 30 - 10 - 20

Note que ao fazer isso, da direita pra esquerda, pegando duas a duas a posição, jogamos sempre o maior número pro começo da ordem.

Por fim, vamos comparar novamente a segunda com a terceira posição.
A terceira é maior que a segunda? Se for, troca! E é.
Agora fica: 30 - 20 - 10

Algoritmo:
1. Compara as duas últimas posições
2. Compara as duas primeiras posições
3. Compara novamente as duas últimas posições


primeiro = int(input('Primeiro numero: '))
    segundo  = int(input('Segundo numero : '))
    terceiro = int(input('Terceiro numero: '))

    print(primeiro,'-',segundo,'-',terceiro)

    if(terceiro > segundo):
        aux = terceiro
        terceiro = segundo
        segundo = aux

    if(segundo > primeiro):
        aux = segundo
        segundo = primeiro
        primeiro = aux

    if(terceiro > segundo):
        aux = terceiro
        terceiro = segundo
        segundo = aux

    print(primeiro,'-',segundo,'-',terceiro)

Mais a frente, estudaremos o algoritmo de bubble sort, onde vamos aprender a ordenar listas de números de qualquer tamanho. A lógica é a mesma: ir comparando dois a dois, do fim pro começo (ou começo pro fim - depende se quer ordem crescente ou decrescente).






Treinando mais ordenação

Só pra treinar, vamos pegar uma sequência maior, de 4 números:
10 - 20 - 40 - 30

Vamos comparar dois a dois.
1. Quarta posição com a terceira: tá ok, 40 é maior que 30, não invertemos.
Ordem: 10 - 20 - 40 - 30

2. Agora a terceira posição (40) com a segunda (20):
40 é maior, então inverte.
Agora fica: 10 - 40 - 20 - 30

3. Segunda com a primeira posição: inverte, pois 40 > 10
Agora fica: 40 - 10 - 20 - 30

4. Chegamos no começo da lista. A primeira posição tem o maior número, que é o correto. Agora vamos comparar tudo de novo, da direita pra esquerda, porém vamos até a segunda posição, pois a primeira já tem o maior.

5. Comparando quarta com terceira: inverte, pois 30 > 20
Temos: 40 - 10 - 30 - 20

6. Comparando terceira com segunda: inverte, pois 30 > 10
Temos: 40 - 30 - 10 - 20
Chegamos ao fim, e colocamos o segundo maior valor na segunda posição, como desejamos. Não mexemos mais na primeira nem na segunda posição da lista.

Agora, vamos pro começo de novo, na direita.

7. Comparando a quarta com a terceira posição: inverte, pois 20 > 10
Temos: 40 - 30 - 20 - 10

Chegamos ao fim, o terceiro maior número na terceira posição.
Automaticamente, a última posição foi preenchida e...tcharam, a lista ficou ordenada, do maior pro menor!

Nenhum comentário:

Postar um comentário