Faça um programa que receba como entradas uma lista de nomes em ordem aleatória e ordene essa lista em ordem alfabética.
Passo 1
Resumo do enunciado: o programa deve receber uma lista de nomes em ordem aleatória e devolver essa lista em ordem alfabética.
Conteúdo da matéria: algoritmos de ordenação e comparação de strings.
O que vamos precisar:
• Saber comparar duas strings para dizer qual vem primeiro em “ordem alfabética” (lexicográfica).
• Usar laços (loops) para percorrer a lista várias vezes.
Conteúdo da matéria: algoritmos de ordenação e comparação de strings.
O que vamos precisar:
• Saber comparar duas strings para dizer qual vem primeiro em “ordem alfabética” (lexicográfica).
• Usar laços (loops) para percorrer a lista várias vezes.
Passo 2
Antes de codar, entenda o que é “ordenar”.
- Ordenar uma lista significa reorganizar seus elementos de tal forma que cada elemento fique na posição correta segundo algum critério (aqui, ordem alfabética).
- Comparação de strings: fazemos letra a letra, levando em conta a tabela Unicode. Por exemplo, “Ana” < “Bia” porque ‘A’ vem antes de ‘B’.
Passo 3
Vamos escolher um algoritmo simples, o bubble sort. A ideia geral é:
- Percorrer a lista de 0 até n–2 (onde n é o número de nomes).
- Para cada par de índices i e i+1, se
lista[i]
vier depois delista[i+1]
em ordem alfabética, troque-os de lugar. - Repetir esse processo n–1 vezes para ter certeza de que tudo ficou no lugar.
Teoricamente, o bubble sort tem complexidade de tempo, ou seja, o número de comparações cresce proporcionalmente ao quadrado da quantidade de nomes.
Passo 4
Vamos traduzir isso em Python (comentado linha a linha para não pular nada):
# Recebe vários nomes, separados por vírgula, e transforma em lista
entrada = input("Digite os nomes separados por vírgula: ")
lista = [nome.strip() for nome in entrada.split(",")]
n = len(lista) # número de nomes
# Estrutura do bubble sort:
for pass_num in range(n - 1): # vamos dar n-1 “passadas” na lista
for i in range(n - 1 - pass_num):
# compara lista[i] e lista[i+1]
if lista[i] > lista[i + 1]:
# se estiverem fora de ordem, troca
lista[i], lista[i + 1] = lista[i + 1], lista[i]
# Depois de pronto, basta mostrar o resultado
print("Lista ordenada:")
for nome in lista:
print(nome)
Passo 5
Teste rápido com exemplo:
Se a entrada for
Carlos, Ana, Bruno
o programa faz:
1ª passada: compara Carlos/Ana → troca → [Ana, Carlos, Bruno]
compara Carlos/Bruno → troca → [Ana, Bruno, Carlos]
2ª passada: compara Ana/Bruno → ok, fica → [Ana, Bruno, Carlos]
2 passadas já bastam (n-1 = 2), e o resultado é:
Ana
Bruno
Carlos
Se a entrada for
Carlos, Ana, Bruno
o programa faz:
1ª passada: compara Carlos/Ana → troca → [Ana, Carlos, Bruno]
compara Carlos/Bruno → troca → [Ana, Bruno, Carlos]
2ª passada: compara Ana/Bruno → ok, fica → [Ana, Bruno, Carlos]
2 passadas já bastam (n-1 = 2), e o resultado é:
Ana
Bruno
Carlos
Resposta
Segue o código completo em Python que lê uma lista de nomes, aplica o bubble sort para ordenar alfabeticamente e exibe o resultado final.