Algoritmos C/C++

Bubble Sort

Cada passagem move o maior valor não ordenado para o final.

O que é Bubble Sort?

Cada passagem move o maior valor não ordenado para o final.

Ordene trocando inversões adjacentes.

Pontos importantes

  • Teste entradas vazias, únicas, duplicadas e ordenadas.
  • Separe correção de otimização.
  • Prefira a biblioteca padrão em produção.

Visualizador de Bubble Sort

O(n²)

Use Executar ou Passo para acompanhar cada comparação e movimento dos dados.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>

int main(void) {
    int values[] = {5, 1, 4, 2};
    for (int end = 3; end > 0; --end) {
        int changed = 0;
        for (int index = 0; index < end; ++index) {
            if (values[index] > values[index + 1]) {
                int temporary = values[index];
                values[index] = values[index + 1];
                values[index + 1] = temporary;
                changed = 1;
            }
        }
        if (!changed) break;
    }
    for (int index = 0; index < 4; ++index) {
        printf("%d ", values[index]);
    }
}
Saída esperada
1 2 4 5
C++
Executar →
main.cpp
#include <iostream>
#include <vector>

int main() {
    std::vector values{5, 1, 4, 2};
    for (auto end = values.end(); end != values.begin(); --end) {
        bool changed = false;
        for (auto item = values.begin(); item + 1 != end; ++item) {
            if (*item > *(item + 1)) {
                std::iter_swap(item, item + 1);
                changed = true;
            }
        }
        if (!changed) break;
    }
    for (int value : values) {
        std::cout << value << ' ';
    }
}
Saída esperada
1 2 4 5

Comparação entre C e C++

É didático mas O(n²); early exit torna entrada ordenada O(n), enquanto C++ production usa std::sort.

C

Loops, ponteiros, tamanhos e buffers são explícitos.

C++

Iteradores e algoritmos separam operação e armazenamento.

Exercícios práticos

Execute as duas versões e modifique-as para observar suas garantias.

  • Rastreie cada comparação.
  • Teste duplicatas e valores extremos.
  • Compare com a biblioteca padrão.