Une classe Java solution du problème :Le sous programme Java implantant l'algorithme de recherche dichotomique :
Une classe complète permettant l'exécution du sous-programme précédent :
import Readln; class ApplicationRechDicho {
static int[] table = new int[20] ; //20 cellules à examiner de 1 à 19
static void AfficherTable (int[] t ) {
// Affichage du tableau
int n = t.length-1;
for ( int i = 1; i <= n; i++)
System.out.print(t[i]+" , ");
System.out.println();
}
static void InitTable ( ) {
// remplissage aléatoire du tableau
int n = table.length-1;
for ( int i = 1; i <= n; i++) {
table[i] = (int)(Math.random()*100);
tableSent[i] = table[i];
}
}
static void TriInsert ( ) {
// sous-programme de Tri par insertion :
int n = table.length-1;
for ( int i = 2; i <= n; i++) {
int v = table[i];
int j = i;
while (table[ j-1 ] > v) {
table[ j ] = table[ j-1 ];
j = j-1;
}
table[ j ] = v ;
}
}
static int RechDichoIter( int[] t, int Elt ) {
int n = t.length-1;
int bas = 1, haut = n, milieu ;
int Rang = -1;
do{
milieu = (bas + haut) / 2;
if ( Elt == t[milieu]) Rang = milieu ;
else if ( t[milieu] < Elt ) bas = milieu + 1 ;
else haut = milieu-1 ;
}
while ( ( Elt != t[milieu] ) & ( bas <= haut ) );
return Rang;
}
static void main(String[ ] args) {
InitTable ( );
System.out.println("Tableau initial :");
AfficherTable (table );
TriInsert ( );
System.out.println("Tableau trié :");
AfficherTable (table );
int x = Readln.unint(), rang;
rang = RechDichoIter( table, x );
if (rang >0)
System.out.println("Elément "+x+" trouvé en : "+rang);
else System.out.println("Elément "+x+" non trouvé !");
}
}
Source recopiable (cliquez sur le lien)
Image en diagrammes structurés JGrasp-Like du programme
informations sur les diagrammes