/* Recherche de la presence d'une valeur entiere */ /* dans un tableau d'entiers trie */ /* par ordre croissant */ /* Methode dichotomique */ public class RecherchePresenceMethodeDichotomique { /////////////////////////////////////////////////// /* Recherche dichotomique de la presence */ /* d'un int dans un tableau de int trie */ static boolean estPresent(int v,int [] t) { boolean stop; boolean res; int indi; int indf; int indm; int valm; res = false; stop = false; indi = 0; indf = t.length-1; while ( stop == false ) { if ( indi > indf ) { stop = true; } else { indm = (indi+indf)/2; valm = t[indm]; if ( valm == v ) { stop = true; res = true; } else { if ( v < valm ) { indf = indm-1; } else { indi = indm+1; } } } } return res ; } /////////////////////////////////////////////////// /* Methode d'affichage des valeurs contenues */ /* dans un tableau de int */ static void affichageTableau(int [] t) { int i; for ( i = 0 ; i < t.length ; i = i+1 ) { Ecran.afficherln(t[i]," "); } } /* Methode de creation d'un tableau de 10 int */ /* initialise avec des valeurs croissantes */ static int [] initRandCroissant() { int [] t = new int[20]; int i; t[0] =(int) (Math.random()*3.0); for ( i = 1 ; i < t.length ; i = i+1 ) { t[i] = t[i-1] + (int) (Math.random()*3.0); } return t; } /* Programme principal */ public static void main(String [] args) { boolean present; int [] t; int v; t = initRandCroissant(); affichageTableau(t); Ecran.afficher("SVP, valeur à rechercher : "); v = Clavier.saisirInt(); present = estPresent(v,t); Ecran.afficherln(v," present? : ",present); } }