q Étape 4 : Comparer t[9] avec 20. Les valeurs sont identiques, la recherche est terminée.
La recherche doit continuer tant que Début est inférieur ou égal à Fin et que l’élément recherché n’a pas été trouvé.
PROGRAMME DICHOTOMIE
VAR
t:tableau[1..10] d’entiers
d,m,f,rech:entiers
DEBUT
rech←18
d←1
f←10
Répéter
m←(d+f) DIV 2
Si rech>t[m] Alors
d←m+1
Sinon
f←m-1
FinSi
TantQue d<=f ET rech<>t[m]
Si rech=t[m] Alors
Afficher "Trouvé"
Sinon
Afficher "Absent"
FinSi
FIN
Le code en Java correspondant est le suivant :
class chap5_dicho {
public static void main(String[] args) {
int t[]={2,7,9,10,11,14,17,18,20,22};
int d,f,m,rech;
rech=15;
d=0;
f=t.length-1;
do {
m=(int)((d+f)/2);
System.out.println("d="+d+", f="+f+", m="+m+", t[m]="+t[m]);
if(rech>t[m]) d=m+1;
else f=m-1;
} while(d<=f && rech!=t[m]);
if(rech==t[m]) System.out.println(rech+" trouvé à la position "+m);
else System.out.println(rech+" n’a pas été trouvé");
}
}
- 9 -
© ENI Editions - All rigths reserved - Jonifar lina
116
La recherche doit continuer tant que Début est inférieur ou égal à Fin et que l’élément recherché n’a pas été trouvé.
PROGRAMME DICHOTOMIE
VAR
t:tableau[1..10] d’entiers
d,m,f,rech:entiers
DEBUT
rech←18
d←1
f←10
Répéter
m←(d+f) DIV 2
Si rech>t[m] Alors
d←m+1
Sinon
f←m-1
FinSi
TantQue d<=f ET rech<>t[m]
Si rech=t[m] Alors
Afficher "Trouvé"
Sinon
Afficher "Absent"
FinSi
FIN
Le code en Java correspondant est le suivant :
class chap5_dicho {
public static void main(String[] args) {
int t[]={2,7,9,10,11,14,17,18,20,22};
int d,f,m,rech;
rech=15;
d=0;
f=t.length-1;
do {
m=(int)((d+f)/2);
System.out.println("d="+d+", f="+f+", m="+m+", t[m]="+t[m]);
if(rech>t[m]) d=m+1;
else f=m-1;
} while(d<=f && rech!=t[m]);
if(rech==t[m]) System.out.println(rech+" trouvé à la position "+m);
else System.out.println(rech+" n’a pas été trouvé");
}
}
- 9 -
© ENI Editions - All rigths reserved - Jonifar lina
116
