/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2006 */ import java.io.*; public class TriABulle { static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in)); /* Fonction d'affichage de tous les entiers contenus */ /* dans un tableau d'entiers */ public static void affichageTableau(int [] t) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) System.out.println(t[i]); } /* Fonction d'initialisation de tous les entiers */ /* contenus dans un tableau d'entiers */ /* avec une valeur tiree au sort entre 0 et max inclus */ public static void initialisationTableau(int [] t,int max) { int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) { /* Initialisation de t[i] avec un entier tire */ /* au hasard entre 0.0 (inclu) et max+1 (exclu) */ t[i] =(int) ((max+1)*Math.random()); } } /* Fonction de recherche de l'indice de la valeur */ /* minimum d'un tableau pour les seules valeurs */ /* allant de l'indice deb a l'indice fin inclus */ public static int indiceMinimum(int [] t,int deb,int fin) { /* Declaration et initialisation a t[deb] de la variable */ /* de stockage de l'indice recherche */ int imin = deb; int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = deb+1 ; i <= fin ; i++ ) /* Si la valeur d'indice i est plus petite que la valeur */ /* d'indice imin */ if ( t[i] < t[imin] ) imin = i; return(imin); } /* Fonction de tri a bulle d'un tableau d'entiers */ public static void triABulle(int [] t) { /* Definition et initialisation a vrai d'un booleen */ /* pour indiquer qu'une permutation a eu lieu lors d'un */ /* parcours a la recherche de permutations a realiser */ boolean permutation = true; /* Definition est initialisation de la variable entiere */ /* qui indique l'indice du prochain maximum a envoyer */ /* en bout de tableau par permutations successives */ int limite = t.length-1; int i; int val; /* Tant qu'au moins une permutation a eu lieu au cours */ /* de la passe precedente */ while ( permutation ) { /* Pour l'instant aucune permutation n'a eu lieu au cours */ /* de cette passe */ permutation = false; /* Parcours de t a la recherche de permutations pour tous */ /* les couples de valeurs d'indice i et i+1 pour i variant */ /* de 0 a limite-1 */ for ( i = 0 ; i < limite ; i++ ) { /* Si une permutation doit etre realisee */ if ( t[i] > t[i+1] ) { /* Permutation */ val = t[i]; t[i] = t[i+1]; t[i+1] = val; /* Le booleen permutation passe a vrai pour indiquer */ /* qu'un moins une permutation a eu lieu au cours */ /* de cette passe */ permutation = true; } } /* Un nouveau maximum a ete "pousse" a sa place */ /* -> La limite de recherche est decrementee de 1 */ limite--; } } /* Fonction principale */ public static void main(String [] args) throws IOException { int n; /* Lecture clavier de l'indice de debut de recherche */ System.out.println("Taille du tableau:"); n = Integer.valueOf(flux.readLine()).intValue(); /* Definition et allocation d'un tableau de 10 entiers */ /* tires au sort entre 0 et 5 */ int [] tab = new int[n]; initialisationTableau(tab,100); System.out.println("Le tableau contient les valeurs suivantes:"); /* Appel a la fonction d'affichage */ affichageTableau(tab); System.out.println(); /* Appel a la fonction de tri a bulle */ triABulle(tab); System.out.println("Le tableau trie est:"); /* Appel a la fonction d'affichage */ affichageTableau(tab); } }