/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 */ import java.io.*; public class TriageTableau2 { 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 reorganisation d'un tableau d'entiers pour */ /* placer toutes les valeurs paires aux petits indices */ /* et les valeurs impaires aux indices superieurs */ public static void triageTableau(int [] t) { /* Declaration et allocation d'un tableaux d'entiers */ /* auxiliaire destine a recueillir des valeurs paires */ /* et impaires (dimensionnes a la taille de t) */ int [] tmp = new int[t.length]; /* Declaration et initialisation d'un compteur entier */ /* donnant l'indice de la premiere place disponible */ /* dans le tableau tmp */ int cpprem = 0; /* Declaration et initialisation d'un compteur entier */ /* donnant l'indice de la derniere place disponible */ /* dans le tableau tmp */ int cpdern = t.length-1; int i; /* Pour toutes les valeurs d'indice 0 a t.length-1 inclus */ for ( i = 0 ; i < t.length ; i++ ) /* Si la valeur d'indice i est paire, elle est copiee */ /* dans tmp a la premiere place disponible et cptpr est */ /* ajuste, sinon elle est copiee a la derniere place */ /* disponible et cptmp est ajuste */ if ( (t[i]%2) == 0 ) { tmp[cpprem] = t[i]; cpprem++; } else { tmp[cpdern] = t[i]; cpdern--; } /* Report dans t de l'integralite des valeurs de tmp */ for ( i = 0 ; i < t.length ; i++ ) t[i] = tmp[i]; } /* Fonction principale */ public static void main(String [] args) throws IOException { /* Definition et allocation d'un tableau de 10 entiers */ /* tires au sort entre 0 et 5 */ int [] tab = new int[10]; initialisationTableau(tab,5); System.out.println("Le tableau contient les valeurs suivantes:"); /* Appel a la fonction d'affichage */ affichageTableau(tab); System.out.println(); /* Reorganisation de tab par appel a triageTableau */ triageTableau(tab); /* Nouvel affichage de tab (reorganise) par appel */ /* a la fonction d'affichage */ affichageTableau(tab); } }