import java.util.LinkedList; import java.util.Queue; public class Bulles { // Méthode bulle : effectue un parcours public static boolean bulle(Queue source, Queue destination) { boolean changed = false; if (source.isEmpty()) { return false; } int prev = source.poll(); // On récupère le premier élément while (!source.isEmpty()) { int current = source.poll(); if (prev > current) { // Si les deux éléments ne sont pas dans l'ordre changed = true; destination.add(current); // Ajouter le plus petit élément prev = prev; // Garder prev pour continuer la comparaison } else { destination.add(prev); prev = current; } } destination.add(prev); // Ajouter le dernier élément return changed; } // Méthode tri : utilise bulle pour trier complètement la file public static void tri(Queue file) { Queue intermediaire = new LinkedList<>(); boolean changed; do { changed = bulle(file, intermediaire); // Inverser les files pour un nouveau parcours Queue temp = file; file = intermediaire; intermediaire = temp; } while (changed); // Les valeurs triées se trouvent dans `file` while (!file.isEmpty()) { System.out.print(file.poll() + " "); } System.out.println(); } public static void main(String[] args) { // Exemple : lecture des entiers passés en arguments Queue file = new LinkedList<>(); for (String arg : args) { file.add(Integer.parseInt(arg)); } // Tri et affichage du résultat tri(file); } }