Algorithmes C/C++

Tri à bulles

Chaque passe pousse la plus grande valeur non triée vers la fin.

Qu’est-ce que Tri à bulles ?

Chaque passe pousse la plus grande valeur non triée vers la fin.

Triez en échangeant les voisins mal ordonnés.

Points importants

  • Testez les entrées vides, uniques, dupliquées et déjà triées.
  • Séparez correction et optimisation.
  • Préférez la bibliothèque standard en production.

Visualisation de Tri à bulles

O(n²)

Utilisez Lecture ou Étape pour suivre chaque comparaison et déplacement de données.

Exemples de code C et C++

C
Exécuter →
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]);
    }
}
Résultat attendu
1 2 4 5
C++
Exécuter →
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 << ' ';
    }
}
Résultat attendu
1 2 4 5

Comparaison entre C et C++

Le tri à bulles est pédagogique mais O(n²) ; l’arrêt anticipé rend une entrée triée O(n), tandis que C++ utilise normalement std::sort.

C

Boucles, pointeurs, tailles et buffers sont explicites.

C++

Itérateurs et algorithmes séparent opération et stockage.

Exercices pratiques

Exécutez les deux versions puis modifiez-les pour observer leurs garanties.

  • Tracez chaque comparaison.
  • Testez doublons et valeurs extrêmes.
  • Comparez aux algorithmes standards.