Une classe Java solution du problème
:
Les différents sous-programmes Java implantant les 4 versions
d'algorithme de recherche linéaire (table non triée) :
|
Une classe complète permettant l'exécution des sous-programmes précédents :
Source recopiable (cliquez sur le lien)
import Readln;
class ApplicationRechLin {static int max = 20;
static int[] table = new int[max] ; //20 cellules à examiner de 1 à 19
static int[] tableSent = new int[max+1] ; // le tableau à examiner de 1 à 20
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 int RechSeq1( int[] t, int Elt ) {
int i = 1; int n = t.length-1;
while ((i <= n) && (t[i] != Elt)) i++;
if (i<=n)
return i;
else
return -1;
}
static int RechSeq2( int[] t, int Elt ) {
int i = 1; int n = t.length-1;
while ((i < n) & (t[i] != Elt)) i++;
if (t[i] == Elt)
return i;
else
return -1;
}
static int RechSeq3( int[] t, int Elt ) {
int i = 1; int n = t.length-2;
t[n+1]= Elt ; //sentinelle
while ((i <= n) & (t[i] != Elt)) i++;
if (i<=n)
return i;
else
return -1;
}
static int RechSeq4( int[] t, int Elt ) {
int i = 1; int n = t.length-1;
for(i = 1; i <= n ; i++)
if (t[i] == Elt)
break;
if (i<=n)
return i;
else
return -1;
}
static void main(String[ ] args) {
InitTable ( );
System.out.println("Tableau initial :");
AfficherTable (table );
int x = Readln.unint(), rang;
//rang = RechSeq1( table, x );
//rang = RechSeq2( table, x );
//rang = RechSeq3( tableSent, x );
rang = RechSeq4( table, x );
if (rang >0)
System.out.println("Elément "+x+" trouvé en : "+rang);
else System.out.println("Elément "+x+" non trouvé !");
}
}
Image en diagrammes structurés JGrasp-Like du programme Remonter
informations sur les diagrammes
Une classe Java solution du problème :
Les deux méthodesJava implantant les 2 versions d'algorithme de recherche linéaire (table triée) :
Une classe complète utilisant ces deux méthodes :
import Readln;
class ApplicationRechLinTrie { 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); } } 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 RechSeqTri1( int[] t, int Elt ) { int i = 1; int n = t.length-1; if (t[n] < Elt) return -1; else { while (t[i] < Elt) i++; return i ; } } static int RechSeqTri2( int[] t, int Elt ) { int i = 1; int n = t.length-1; if (t[n] < Elt) return -1; else { for (i = 1; i <= n-1; i++) if (t[i] == Elt) break; return i; } } 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 = RechSeqTri1( table, x ); rang = RechSeqTri2( 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)
Remonter