/* Tri a bulle optimise d'un tableau d'entiers */ public class TriBulleOptimise { /* Fonction d'affichage des valeurs contenues */ /* dans un tableau de int */ static void affichageTableau(int [] t) { for ( int i = 0 ; i < t.length ; i++ ) { Ecran.formater("%4d",t[i]); } Ecran.sautDeLigne(); } /* Fonction de creation d'un tableau de 10 int */ /* initialise avec des valeurs tirees au sort */ /* dans l'intervalle [0,1000[ */ static int [] initRand() { int [] t = new int[10]; for ( int i = 0 ; i < t.length ; i++ ) { t[i] =(int) (Math.random()*1000.0); } return t; } /////////////////////////////////////////////////// /* Fonction de tri à bulle par ordre croissant */ /* des valeurs contenues dans un tableau d'int */ /* Version optimisée */ /* t : Le tableau d'int à trier */ /* par ordre croissant */ static void triBulleOptimise(int [] t) { boolean permutation; int np = t.length-1; do { permutation = false; for ( int j = 0 ; j < np ; j++ ) { if ( t[j] > t[j+1] ) { int aux = t[j]; t[j] = t[j+1]; t[j+1] = aux; permutation = true; } } np--; } while ( permutation ) ; } /////////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { int [] t = initRand(); Ecran.afficherln("Tableau initial"); affichageTableau(t); triBulleOptimise(t); Ecran.afficherln("Tableau trié"); affichageTableau(t); } }