/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Fevrier 2005 */ import java.io.*; public class TriageTableau3 { 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 initialisation d'une variable entiere */ /* de recherche de l'indice de la premiere valeur impaire */ /* du tableau t */ int ipr = 0; /* Declaration et initialisation d'une variable entiere */ /* de recherche de l'indice de la derniere valeur */ /* paire du tableau t */ int imp = t.length-1; /* Variable auxiliaire de permutation */ int aux; /* Tant qu'une les deux indices ne se sont pas croises */ while ( ipr < imp ) { /* Recherche par parcours a partir de l'indice donne par ipr */ /* de l'indice de la premiere valeur impaire du tableau t */ while ( ( t[ipr]%2 == 0 ) && ( ipr < t.length ) ) ipr++; /* Recherche par parcours en arriere a partir de l'indice */ /* donne par imp de l'indice de la premiere valeur paire */ /* du tableau t */ while ( ( t[imp]%2 == 1 ) && ( imp >= 0 ) ) imp--; /* Si une permutation doit etre realisee */ if ( ipr < imp ) { aux = t[ipr]; t[ipr] = t[imp]; t[imp] = aux; } } } /* 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); } }