Ordenar &
Decifrar
Os maiores valores borbulham até o fim — depois extraímos média, máximo e mínimo em uma única varredura.
Os maiores valores borbulham até o fim — depois extraímos média, máximo e mínimo em uma única varredura.
A3Entender o princípio do Bubble Sort: trocas adjacentes em sucessivas passadas
A3Codificar e rastrear o algoritmo em Python, com loops aninhados e troca de valores
A4Usar acumuladores para calcular a média e sentinelas para guardar o melhor até agora
A4Extrair máximo, mínimo e média de um vetor em uma única passada
Você tem um vetor com 5 notas, fora de ordem:
Como deixá-las em ordem crescente de forma automática? Existem vários algoritmos — começamos pelo mais simples e didático: o Bubble Sort.
A ideia central: comparar pares vizinhos e trocar quando estão fora de ordem. Repete-se até nenhum precisar de troca.
Resultado esperado após o algoritmo:
O nome "bolha" vem da imagem dos maiores valores subindo — borbulhando — para o final do vetor a cada passada.
Vetor inicial [5, 1, 4, 2, 8]. Compare cada par adjacente, da esquerda para a direita, e troque se o da esquerda for maior.
Controla quantas passadas faremos pelo vetor — no pior caso, N − 1 passadas.
Percorre os pares adjacentes: compara v[j] com v[j+1], ao longo da passada.
Se v[j] > v[j+1], eles estão na ordem errada e precisam ser trocados.
Usa uma variável auxiliar (temp) para não perder o valor durante a troca.
temp? Se você fizer v[j] <- v[j+1] direto, perde o valor original de v[j] antes de copiar para v[j+1]. A variável temporária é o que segura o valor durante a troca.
v = [5, 1, 4, 2, 8]
n = len(v)
for i in range(n - 1): # N-1 passadas
for j in range(n - 1 - i): # pares
if v[j] > v[j+1]:
temp = v[j] # 🔑 guarda
v[j] = v[j+1] # sobrescreve
v[j+1] = temp # restaura
print(v)
[1, 2, 4, 5, 8]
# Detalhes:
# - range(n-1) gera
# 0..N-2 (N-1 passadas)
# - range(n-1-i) reduz
# porque os últimos i
# já estão no lugar
# - temp é a "ponte"
# da troca
#
# Atalho Python:
# v[j], v[j+1] = \
# v[j+1], v[j]
#
# Pior caso: O(N²)
O(N²) assusta?O Bubble Sort tem dois laços aninhados, cada um podendo varrer até N elementos. No pior caso, ele faz N × N = N² operações.
Para entender a escala:
Por isso o Bubble Sort é educativo, não profissional. Em produção, usamos Quick Sort, Merge Sort, Tim Sort — todos com complexidade média O(N log N).
flag trocou permite encerrar mais cedo no melhor caso (O(N)).
Aplicando uma passada completa do Bubble Sort no vetor [3, 5, 1, 2], qual será o estado do vetor ao final?
[3, 1, 2, 5] — o 5 borbulhou até o fim ✅[1, 2, 3, 5] — já totalmente ordenado[3, 5, 1, 2] — sem mudança alguma[5, 3, 2, 1] — ordem decrescente[3,5,1,2]. Compara (5,1) — troca → [3,1,5,2]. Compara (5,2) — troca → [3,1,2,5]. O maior elemento (5) chegou ao fim, mas o vetor ainda não está totalmente ordenado.
Saber ordenar dados é só uma das coisas que fazemos com vetores. Outra é extrair informação: qual é a média da turma? Qual a maior nota? E a menor? A próxima aula mostra que uma única varredura resolve as três perguntas — basta combinar acumuladores e sentinelas.
Esta é a receita para extrair média, máximo e mínimo em uma única varredura. Guarde-a: no próximo slide você vai implementá-la sozinho.
Prepare os dados. Tenha o vetor de notas que será analisado.
Crie os acumuladores. soma = 0 (acumulador) e maior = v[0], menor = v[0] (sentinelas) — sempre com o primeiro elemento, nunca com 0.
Percorra o vetor. Use for i in range(len(v)) para visitar cada elemento uma única vez.
Acumule e compare. Some soma = soma + v[i]; se v[i] > maior, atualize maior; se v[i] < menor, atualize menor.
Calcule e mostre. Depois do laço: media = soma / len(v) e imprima média, máximo e mínimo.
v[0] (passo 2) é essencial. Com 0, uma lista só de negativos daria "maior" = 0 — um valor que nem existe na lista.
Complete o programa abaixo. A partir do vetor de notas, ele deve calcular e exibir a média, o máximo e o mínimo em uma única varredura. Siga os 5 passos do slide anterior.
v = [8.5, 7.0, 9.5, 6.0, 8.0, 5.5]
soma = 0 # 2 · acumulador
maior = v[0] # sentinela (máx)
menor = v[0] # sentinela (mín)
for i in range(len(v)): # 3 · uma única varredura
soma = soma + v[i] # 4 · acumula
if v[i] > maior: # atualiza o máximo
maior = v[i]
if v[i] < menor: # atualiza o mínimo
menor = v[i]
media = soma / len(v) # 5 · calcula e mostra
print(f"Média: {media:.4f}")
print(f"Máximo: {maior}")
print(f"Mínimo: {menor}")
Média: 7.4167
Máximo: 9.5
Mínimo: 5.5
── saída esperada do ──
── seu programa ↑ ──────
sum(), max() ou min(). Inicialize maior e menor com v[0], nunca com 0.
Ao inicializar maior e menor com o primeiro elemento da lista (v[0]), o que acontece se a lista tiver apenas um valor, como [500]?
v[1] torna o algoritmo correto até nesse caso-limite — diferente de inicializar com 0, que daria um resultado errado.
temp) ou o atalho Python a, b = b, a permitem trocar dois valores sem perdê-losO(N²) → didático mas ineficiente para grandes volumessoma) e sentinelas (maior, menor) → técnica fundamental de processamento de coleçõesO(N)v[0] (não 0) é a forma correta — robusta até para casos-limitesum(), max(), min() e sorted() como built-ins — mas saber implementar na mão é o que ensina algoritmoMatrizes (arrays bidimensionais) — saltamos de uma para duas dimensões: linhas e colunas, acesso por m[i,j], e novos padrões de varredura. A semana 13 fecha a unidade com funções e procedimentos.
Vídeo passo a passo de como o algoritmo opera internamente — análise dos pares de valores e construção gradual da lista ordenada.
📎 ELEMAR JUNIOR — O que é e como funciona o BubbleSort (passo-a-passo). YouTube, 8 out. 2023.
youtube.com/watch?v=8RkZoBZNNgI
Para fechar a unidade — vídeo que reforça e aprofunda os conceitos básicos de vetores, ampliando a base de tudo que vimos nas 4 aulas da semana.
📎 PROF. ROMERSON OLIVEIRA — AEDS 6: Vetores (1) — O que são, como acessar e como são armazenados. YouTube, 23 out. 2020.
youtube.com/watch?v=i0QgDWI9Y4E
FARIAS, R. Aula 05 — Ordenação e pesquisa. COS 121: estruturas de dados e algoritmos. UFRJ, [s.d.]. Disponível em: cos.ufrj.br/~rfarias/cos121/aula_05.html. Acesso em: 28 nov. 2025.
GATTO, E. C. Algoritmos de ordenação: Bubble Sort. Embarcados, 16 ago. 2017. Disponível em: embarcados.com.br/algoritmos-de-ordenacao-bubble-sort. Acesso em: 28 nov. 2025.
Base institucional: SEDUC-SP. Educação Profissional Paulista — Técnico em Desenvolvimento de Sistemas. Componente 1, Unidade 4, Semana 11 (SISANO1C1B2S11A3 e SISANO1C1B2S11A4).
Identidade visual · imagens © Getty Images · adaptação para apresentação HTML por Guilherme Antunes