Traduction en Java
Recherche dichotomique dans une table
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
 
 
 
 
 
 

Remonter