Vous êtes sur la page 1sur 15

Mr Bassem Guetif L S Mhamdia

LES algorithmes de tri


Et de recherche
Objectifs :
Manipulation des algorithmes de tri et de recherche, savoir :
 Tri : par slection, bulles et par insertion.
 Recherche : squentielle et dichotomique

A. Le tri dun tableau :


I. Introduction :
Le tri est une opration qui consiste rpartir ou organiser une collection dobjets selon un ordre
dtermin. Dans le domaine de linformatique, il existe plusieurs mthodes de tri (algorithmes). Dans ce
chapitre nous allons dcouvrir trois mthodes de tri :
Tri par slection,
Tri bulles,
Tri par insertion.
II. Tri par slection :
Activit : Ecrire un programme qui permet de saisir un tableau T de n entiers, puis trier en ordre
croissant ce tableau en utilisant la mthode de tri par slection et afficher le rsultat.
a) Principe : Cette mthode de tri consiste :
1. Se pointer la 1re case du tableau T et de parcourir la totalit du tableau pour reprer lindice de
la premire position du minimum,
2. Comparer ce minimum avec T [1]. Sils sont diffrents on les permute,
3. Le sous tableau de T allant de 2 n est priori non tri, on applique ltape 1 et 2 et ainsi de
suite jusqu lavant dernier lment (n-1).
b) Exemple :
Soit un tableau T contenant les dix lments suivants :

T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape1 : Parcourir la totalit du tableau pour reprer le minimum (indice de la premire position du
minimum) et le comparer avec T [1]

T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [1] <> T [4] alors permutation
On obtient :
T: -5 10 0 12 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Le sous tableau allant de 2 n est priori non tri, on applique ltape 1 et 2 et ainsi de suite
jusqu lavant dernier lment (n-1).
-1-
Mr Bassem Guetif L S Mhamdia

Etape2 :
T: -5 10 0 12 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [2] <> T [7] alors permutation
On obtient :
T: -5 -2 0 12 8 12 10 2 40 -1
1 2 3 4 5 6 7 8 9 10
Etape3 :
T: -5 -2 0 12 8 12 10 2 40 -1
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [3] <> T [10] alors permutation
On obtient :
T: -5 -2 -1 12 8 12 10 2 40 0
1 2 3 4 5 6 7 8 9 10
Etape4 :
T: -5 -2 -1 12 8 12 10 2 40 0
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [4] <> T [10] alors permutation
On obtient :
T: -5 -2 -1 0 8 12 10 2 40 12
1 2 3 4 5 6 7 8 9 10
Etape5 :
T: -5 -2 -1 0 8 12 10 2 40 12
1 2 3 4 5 6 7 8 9 10

Indice du
minimum

T [5] <> T [8] alors permutation


-2-
Mr Bassem Guetif L S Mhamdia

On obtient :
T: -5 -2 -1 0 2 12 10 8 40 12
1 2 3 4 5 6 7 8 9 10

Etape6 :
T: -5 -2 -1 0 2 12 10 8 40 12
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [6] <> T [8] alors permutation
On obtient :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10
Etape7 :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [7] = T [7] alors pas de permutation
On obtient :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10
Etape8 :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10

Indice du
minimum
T [8] = T [8] alors pas de permutation
On obtient :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10
Etape9 :
T: -5 -2 -1 0 2 8 10 12 40 12
1 2 3 4 5 6 7 8 9 10

T [9] <> T [10] alors permutation Indice du


minimum
On obtient :

-3-
Mr Bassem Guetif L S Mhamdia

T: -5 -2 -1 0 2 8 10 12 12 40
1 2 3 4 5 6 7 8 9 10

Remarque :
On est arriv llment numro n-1, alors arrt du traitement.
Nous navons pas besoin de traiter le dernier lment, puisque si les neuf premiers
lments sont tris alors automatiquement le dernier sera le plus grand et par consquent il
se trouve la bonne position.

c) Spcifications et algorithmes du problme :


1. Spcification du programme principale :
Rsultat : Afficher le tableau T tri en utilisant une procdure Affiche
Traitements : Il faut tri le tableau T, en utilisant une procdure Tri
Donnes : Il faut remplir le tableau T et saisir la taille n, en utilisant la procdure
Saisie
2. Algorithme du programme principal :
0) Dbut Tri_Selection
1) Saisie (T, N)
2) Tri (T, N)
3) Affiche (T, N)
4) Fin Tri_Selection

Tableau de dclaration des nouveaux types Tableau de dclaration des Objets

Types Objets Type/Nature


TAB = Tableau de 100 entiers T TAB
N Entier
Saisie, Affiche, Tri Procdure

3. Spcification de la procdure Saisie :


Rsultat : Saisir Nf et remplir Tf
Traitements : Le remplissage dun tableau est une action rptitive, ou on
connat le nombre de rptition qui est gale Nf, do utilisation de la boucle
POUR FAIRE La saisie de lentier Nf doit tre contrle pour ne pas saisir
un entier ngatif ou suprieur 100. Cette procdure admet deux paramtres
formels qui sont Nf et Tf.
4. Algorithme de la procdure Saisie :
0) Dbut procdure Saisie (VAR Tf : TAB ; VAR Nf : Entier)
1) Rpter
Tableau de dclaration
Ecrire ("Donner la taille du tableau : "), Lire (Nf)
des Objets locaux
Jusqu' (Nf dans [1..100])
2) Pour i de 1 Nf Faire
Ecrire ("Donner llment N", i, ": "), Lire (Tf[i]) Objets Type/Nature
i Entier
Fin Pour
3) Fin Saisie
5. Spcification de la procdure Tri :
Rsultat : Trier le tableau Tf
Traitements : Il sagit dun traitement rptitif jusqu' lavant dernier lment du
tableau, do utilisation de la boucle POUR FAIRE , pour chaque lment
nous allons excuter deux actions :
-4-
Mr Bassem Guetif L S Mhamdia

 Action1 : Chercher la premire apparition du minimum


 Action2 : Comparer lindice du minimum et celui de llment en cours,
sils sont diffrents, alors on applique la permutation ces deux lments.
Donc on fera appel une fonction intitule Premposmin qui retourne le premier indice du
minimum et une procdure intitule Permut permettant de permuter deux lments.
Les paramtres formels pour cette procdure sont le tableau Tf et sa taille Nf.
6. Algorithme de la procdure Tri :
0) Dbut procdure Tri (VAR Tf : TAB ; Nf : Entier) Tableau de dclaration
1) Pour i de 1 Nf-1 Faire des Objets locaux
Pmin Premposmin (Tf, Nf, i)
Si i Pmin Alors Objets Type/Nature
Permut (Tf[i], Tf[Pmin]) i, Pmin Entier
Finsi Premposmin Fonction
Fin Pour Permut Procdure
2) Fin Tri
7. Spcification de la fonction Premposmin :
Rsultat : Dterminer la premire position du minimum dans un sous tableau
Traitements : Il sagit dun traitement rptitif jusqu' le dernier lment du
tableau, do utilisation de la boucle POUR FAIRE. On doit initialiser la
position du minimum i puis faire le parcours du sous tableau, ds que on trouve
un lment infrieur ce minimum on change la position par lindice de cet
lment.
Les paramtres formels de cette fonction sont Tf, Nf et pd
8. Algorithme de la fonction Premposmin :
0) Dbut fonction Premposmin (Tf : TAB ; Nf, pd : Entier) : Entier
1) [pm pd] Pour J de pd+1 Nf Faire
Si Tf[j] < Tf [pm] Alors Tableau de dclaration
Pm j des Objets locaux
Finsi
Fin Pour Objets Type/Nature
2) Premposmin pm i, pm Entier
3) Fin Premposmin
9. Spcification de la procdure Permut :
Rsultat : Permuter deux variables entiers X et Y
Traitements : pour permuter deux variables, on procde gnralement utiliser
une variable intermdiaire et faire la permutation.
Les paramtres formels de cette procdure sont X et Y.
10. Algorithme de la procdure Permut :
0) Dbut procdure Permut (VAR X, Y : Entier) Tableau de dclaration
1) Int X des Objets locaux
2) X Y
3) Y Int Objets Type/Nature
4) Fin Permut Int Entier

11. Spcification de la procdure Affiche :


Rsultat : Afficher le tableau Tf
Traitements : Il sagit dun traitement rptitif pour afficher chaque lment du
tableau Tf , donc linstruction daffichage va tre excuter Nf fois, le nombre de
rptition est connu davance, do utilisation de la boucle POUR FAIRE
Les paramtres formels de cette procdure sont Tf et Nf.
12. Algorithme de la procdure Affiche :
0) Dbut procdure Affiche (Tf : TAB ; Nf : Entier) Tableau de dclaration
-5- des Objets locaux

Objets Type/Nature
i Entier
Mr Bassem Guetif L S Mhamdia

1) Pour i de 1 Nf Faire
Ecrire ("Llment N", i, " est ", Tf[i])
Fin Pour
2) Fin Affiche

III. Tri bulles :


Activit : Ecrire un programme qui permet de saisir un tableau T de n entiers, puis trier en ordre
croissant ce tableau en utilisant la mthode de tri bulles et afficher le rsultat.
a) Principe : Cette mthode de tri consiste :
1. Comparer les lments du tableau T deux deux,
2. Permuter les contenus lorsque lordre nest pas respect,
3. Refaire les actions 1 et 2 et ainsi de suite jusqu avoir finalement un tableau tri.
b) Exemple :
Soit un tableau T contenant les dix lments suivants :
T : 12 10 0 -5 8 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Vrai
Soit une variable boolenne test initialise vrai et qui devienne faux chaque permutation.

Passage1 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Test

T[1] > T[2] alors 1 2 3 4 5 6 7 8 9 10 Vrai


permutation
T: 10 12 0 -5 8 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[2] > T[3] alors
permutation
T: 10 0 12 -5 8 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[3] > T[4] alors
permutation
T: 10 0 -5 12 8 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[4] > T[5] alors
permutation
T: 10 0 -5 8 12 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[5] = T[6] alors pas
de permutation
T: 10 0 -5 8 12 12 -2 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[6] > T[7] alors
permutation
T: 10 0 -5 8 12 -2 12 2 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[7] > T[8] alors
permutation
T: 10 0 -5 8 12 -2 2 12 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[8] < T[9] alors pas
de permutation
-6-
Mr Bassem Guetif L S Mhamdia

T: 10 0 -5 8 12 -2 2 12 40 -1 Test
1 2 3 4 5 6 7 8 9 10 Faux
T[9] > T[10] alors
permutation
T: 10 0 -5 8 12 -2 2 12 -1 40 Test
1 2 3 4 5 6 7 8 9 10 Faux

Puisquon a atteint la fin du tableau et le contenu de la variable test est Faux, alors on doit
recommencer une nouveau passage et ainsi de suite jusqu' ce quon fasse un passage complet du tableau
sans modifier le contenu de test (Vrai).
c) Spcifications et algorithmes du problme :
1. Spcification du programme principale :
Rsultat : Afficher le tableau T tri en utilisant une procdure Affiche
Traitements : Il faut tri le tableau T, en utilisant une procdure Tri
Donnes : Il faut remplir le tableau T et saisir la taille N, en utilisant la procdure
Saisie
2. Algorithme du programme principal :
0) Dbut Tri_Bulle
1) Saisie (T, N)
2) Tri (T, N)
3) Affiche (T, N)
4) Fin Tri_Bulle

Tableau de dclaration des nouveaux types Tableau de dclaration des Objets

Types Objets Type/Nature


TAB = Tableau de 100 entiers T TAB
N Entier
Saisie, Affiche, Tri Procdure

3. Spcification de la procdure Tri :


Rsultat : Trier le tableau Tf
 Traitements : Il sagit dun traitement rptitif jusqu' ce que la valeur de
la variable test reste vrai, do on utilise la structure Rpter Jusqu'
Le passage du tableau est un parcours du premier lment jusquau dernier
lment, do on utilise la boucle POUR FAIRE, et comparer chaque deux
lments conscutifs, sils ne sont pas dans le bon ordre on fait la permutation.
Donc on fera appel une procdure intitule Permut permettant de permuter
deux lments.
Les paramtres formels pour cette procdure sont le tableau Tf et sa taille Nf.
4. Algorithme de la procdure Tri :
0) Dbut procdure Tri (VAR Tf : TAB ; Nf : Entier) Tableau de dclaration
1) Rpter des Objets locaux
Test Vrai
Pour i de 1 Nf-1 Faire Objets Type/Nature
Si Tf[i] > Tf[i+1] Alors i Entier
Permut (Tf[i], Tf[i+1]) Test Boolen
Finsi Permut Procdure
Fin Pour
Jusqu (Test = Vrai)
-7-
Mr Bassem Guetif L S Mhamdia

2) Fin Tri
IV. Tri par insertion :
Activit : Ecrire un programme qui permet de saisir un tableau T de n entiers, puis trier en ordre
croissant ce tableau en utilisant la mthode de tri par insertion et afficher le rsultat.
a) Principe : Cette mthode de tri consiste :
1. Considrer que les i-1 premiers lments du tableau T sont tris et insrer llment Ni dans sa
position parmi les i-1 dj tris,
2. Rpter cette action jusqu' le dernier lment du tableau T.
NB : Linsertion se traduit par le sauvegarde de llment N i dans une variable intermdiaire
(Int), puis le dcalage dun cran droite des lments i-1, i-2, jusqu' avoir un lment infrieur Int
et finalement affecter le contenu de Int dans llment libre.
b) Exemple :
Soit un tableau T contenant les dix lments suivants :
T : 12 10 0 -5 8 12 -2 2 40 -1 Int
1 2 3 4 5 6 7 8 9 10

On commence par llment N2 puisque si le tableau contient un seul lment, il est considr
tri.
Etape1 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 10
de T[2]

On obtient : T: 10 12 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape2 :
T: 10 12 0 -5 8 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 0
de T[3]
On obtient :
T: 0 10 12 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape3 :
T: 0 10 12 -5 8 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 -5
de T[4]
On obtient :
T: -5 0 10 12 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape4 :
T: -5 0 10 12 8 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 8
de T[5] -8-
Mr Bassem Guetif L S Mhamdia

1 2 3 4 5 6 7 8 9 10

On obtient :
T: -5 0 8 10 12 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape5 :
T: -5 0 8 10 12 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 8
de T[6]
On obtient :
T: -5 0 8 10 12 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape6 :
T: -5 0 8 10 12 12 -2 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 -2
de T[7]
On obtient :
T: -5 -2 0 8 10 12 12 2 40 -1
1 2 3 4 5 6 7 8 9 10

Etape7 :
T: -5 -2 0 8 10 12 12 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 2
de T[8]
On obtient :
T: -5 -2 0 2 8 10 12 12 40 -1
1 2 3 4 5 6 7 8 9 10

Etape8 :
T: -5 -2 0 8 10 12 12 2 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 2
de T[9]
On obtient :
T: -5 -2 0 2 8 10 12 12 40 -1
1 2 3 4 5 6 7 8 9 10

-9-
Mr Bassem Guetif L S Mhamdia

Etape9 :
T: -5 -2 0 2 8 10 12 12 40 -1 Int
Recherche de la
position dinsertion 1 2 3 4 5 6 7 8 9 10 -1
de T[10]
On obtient :
T: -5 -2 -1 0 2 8 10 12 12 40
1 2 3 4 5 6 7 8 9 10

c) Spcifications et algorithmes du problme :


1. Spcification du programme principale :
Rsultat : Afficher le tableau T tri en utilisant une procdure Affiche
Traitements : Il faut trier le tableau T, en utilisant une procdure Tri
Donnes : Il faut remplir le tableau T et saisir la taille N, en utilisant la procdure
Saisie
2. Algorithme du programme principal :
0) Dbut Tri_Insertion
1) Saisie (T, N)
2) Tri (T, N)
3) Affiche (T, N)
4) Fin Tri_Insertion

Tableau de dclaration des nouveaux types Tableau de dclaration des Objets

Types Objets Type/Nature


TAB = Tableau de 100 entiers T TAB
N Entier
Saisie, Affiche, Tri Procdure

3. Spcification de la procdure Tri :


Rsultat : Trier le tableau Tf
 Traitements : Il sagit dun traitement rptitif pour tous les lments du
tableau, sauf le premier, do utilisation de la boucle POUR FAIRE ,
L pour chaque lment nous allons excuter ces actions :
 Action1 : Chercher la position correcte de llment en question
 Action2 : Le ranger dans une variable intermdiaire (Int)
 Action3 : Dcaler dune position les lments suprieurs a cet lment
 Action4 : Affecter au dernier lment dcal la valeur de Int
Les paramtres formels pour cette procdure sont le tableau Tf et sa taille Nf.
4. Algorithme de la procdure Tri :
0) Dbut procdure Tri (VAR Tf : TAB ; Nf : Entier)
1) Pour i de 2 Nf Faire
Pos 1 Tableau de dclaration
Tant que (Pos < i) Faire des Objets locaux
-10-
Objets Type/Nature
i, Pos, Int Entier
Mr Bassem Guetif L S Mhamdia

Si Tf[Pos] > Tf[i] Alors


Int Tf[i]
Pour j de i Pos +1 Faire
Tf[j] Tf[j-1]
Fin Pour
Tf[pos] Int
Finsi
Pos Pos +1
Fin Tant que
Fin Pour
2) Fin Tri

B. La recherche dun lment dans un tableau :


I. Introduction :
La recherche dun lment dans un tableau ou dans une liste de valeur est un traitement trs utile
en informatique. Parmi les mthodes de recherches, on cite :
La recherche squentielle,
La recherche dichotomique.
II. La recherche squentielle :
Activit : Ecrire un programme qui permet de saisir un tableau T de n entiers, puis vrifier si un
entier donn X existe dans le tableau ou non en utilisant la mthode de recherche squentielle.
a) Principe :
Cette mthode de recherche consiste parcourir les lments du tableau un par un jusqu' trouver
la valeur cherche ou arriver la fin du tableau.
b) Exemple :
Soit un tableau T contenant les dix lments suivants :

T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10

Pour X = -2 le programme affichera "-2 existe dans le tableau"


Pour X = 5 le programme affichera "5 nexiste pas dans le tableau"

c) Spcifications et algorithmes du problme :


1. Spcification du programme principale :
Rsultat : Afficher le rsultat de lexistence de X dans le tableau T en utilisant
une procdure Affiche
Traitements : Il faut vrifier si X existe dans le tableau T ou non, en utilisant une
procdure Recherche
Donnes : Il faut remplir le tableau T, saisir la taille N et la valeur a cherche X,
en utilisant la procdure Saisie
2. Algorithme du programme principal :
0) Dbut Recherche_Seq
1) Saisie (T, N, X)
2) Verif Recherche (T, N, X)
3) Affiche (Verif) Tableau de dclaration des Objets
4) Fin Recherche_Seq
Objets Type/Nature
-11- T TAB
N, X Entier
Saisie, Affiche Procdure
Recherche Fonction
Mr Bassem Guetif L S Mhamdia

Tableau de dclaration des nouveaux types

Types
TAB = Tableau de 100 entiers

3. Spcification de la procdure Saisie :


Rsultat : Saisir Nf, Xf et remplir Tf
Traitements : Le remplissage dun tableau est une action rptitive, ou on
connat le nombre de rptition qui est gale Nf, do utilisation de la boucle
POUR FAIRE La saisie de lentier Nf doit tre contrle pour ne pas saisir
un entier ngatif ou suprieur 100. Cette procdure admet trois paramtres
formels qui sont Nf, Xf et Tf.
4. Algorithme de la procdure Saisie :
0) Dbut procdure Saisie (VAR Tf : TAB ; VAR Nf, Xf : Entier)
1) Rpter
Tableau de dclaration
Ecrire ("Donner la taille du tableau : "), Lire (Nf)
des Objets locaux
Jusqu' (Nf dans [1..100])
2) Pour i de 1 Nf Faire
Ecrire ("Donner llment N", i, ": "), Lire (Tf[i]) Objets Type/Nature
i Entier
Fin Pour
3) Ecrire ("Donner la valeur a cherche : "), Lire (Xf)
4) Fin Saisie
5. Spcification de la fonction Recherche :
Rsultat : Retourner un rsultat boolen dterminant lexistence.
Traitements : Il sagit de comparer Xf avec chaque lment du tableau Tf jusqu'
trouver la valeur ou atteindre la fin du tableau, donc utilisation dune structure
itrative condition darrt et au minimum on doit faire une comparaison si on
trouve la valeur la premire case du tableau, do utilisation de la boucle
REPETR JUSQU'A
Les paramtres formels de cette fonction sont Xf, Nf et Tf.
6. Algorithme de la fonction Recherche :
0) Dbut fonction recherche (Tf : TAB ; Nf, Xf : Entier) : Boolen
1) [Trouve Faux, i 1] Rpter
Si Tf[i] = Xf Alors Tableau de dclaration
Trouve Vrai des Objets locaux
Sinon
i i+1 Objets Type/Nature
Finsi i Entier
Jusqu (Trouve = Vrai) OU (i > Nf) Trouve Boolen
2) Recherche Trouve
3) Fin Recherche

7. Spcification de la procdure Affiche :


Rsultat : Afficher un commentaire pour dire si la valeur existe dans le tableau
ou non
Traitements : Il sagit dune structure conditionnelle suivant la valeur de Veriff,
on affiche un commentaire
Les paramtres formels de cette procdure sont Veriff
8. Algorithme de la procdure Affiche :
0) Dbut procdure Affiche (Veriff : Boolen)
1) Si Veriff = vrai Alors
-12-
Mr Bassem Guetif L S Mhamdia

Ecrire (X," existe dans le tableau")


Sinon
Ecrire (X," nexiste pas dans le tableau")
Finsi
2) Fin Affiche

III. La recherche dichotomique :


Activit : Ecrire un programme qui permet de saisir un tableau T de n entiers tris dans lordre
croissant, puis vrifier si un entier donn X existe dans le tableau ou non en utilisant la mthode de
recherche dichotomique.
a) Principe :
Cette mthode de recherche consiste :
1. Fixer le dbut (Deb) et la fin (Fin) du tableau,
2. Fixer le milieu du tableau (Mil = (Fin + Deb) Div 2),
3. Comparer X et T[Mil], Si (X > T[Mil]) alors rechercher X dans le sous tableau [Mil + 1
Fin] sinon si (X < T[Mil]) alors dans le tableau [Deb Mil - 1],
4. Rpter les tapes 1, 2 et 3 jusqu (X = T[Mil]) ou (Deb > Fin)
b) Exemple :
Soit un tableau T contenant les dix lments suivants :

T: -5 -2 -1 0 2 8 10 12 12 40
1 2 3 4 5 6 7 8 9 10

Pour X = -2 le programme affichera "-2 existe dans le tableau"


Pour X = 5 le programme affichera "5 nexiste pas dans le tableau"
c) Spcifications et algorithmes du problme :
1. Spcification du programme principale :
Rsultat : Afficher le rsultat de lexistence de X dans le tableau T en utilisant
une procdure Affiche
Traitements : Il faut vrifier si X existe dans le tableau T ou non, en utilisant une
procdure Recherche
Donnes : Il faut remplir le tableau T, saisir la taille N et la valeur a cherche X,
en utilisant la procdure Saisie
2. Algorithme du programme principal :
0) Dbut Recherche_Dicho
1) Saisie (T, N, X) Tableau de dclaration des Objets
2) Verif Recherche (T, N, X)
3) Affiche (Verif) Objets Type/Nature
4) Fin Recherche_ Dicho
T TAB
N, X Entier
Tableau de dclaration des nouveaux types Saisie, Affiche Procdure
Recherche Fonction
Types
TAB = Tableau de 100 entiers
3. Spcification de la procdure Saisie :
Rsultat : Saisir Nf, Xf et remplir Tf
Traitements : Le tableau est form par des entiers tris dans lordre croissant,
donc on doit saisir llment N 1 puis chaque saisie on doit vrifi que
llment est suprieur celui qui le prcde et ainsi de suite jusqu' le dernier

-13-
Mr Bassem Guetif L S Mhamdia

lment. Cest un traitement rptitif, la structure adquate est la boucle POUR


FAIRE
La saisie de lentier Nf doit tre contrle pour ne pas saisir un entier ngatif ou
suprieur 100. Cette procdure admet trois paramtres formels qui sont Nf, Xf et Tf.
4. Algorithme de la procdure Saisie :
0) Dbut procdure Saisie (VAR Tf : TAB ; VAR Nf, Xf : Entier)
1) Rpter
Tableau de dclaration
Ecrire ("Donner la taille du tableau : "), Lire (Nf)
des Objets locaux
Jusqu' (Nf dans [1..100])
2) [Ecrire ("Donner llment N1, ": "), Lire (Tf[1])]
Pour i de 2 Nf Faire Objets Type/Nature
i Entier
Rpter
Ecrire ("Donner llment N", i, ": "), Lire (Tf[i])
Jusqu' (Tf[i] >= Tf[i 1])
Fin Pour
3) Ecrire ("Donner la valeur a cherche : "), Lire (Xf)
4) Fin Saisie
5. Spcification de la fonction Recherche :
Rsultat : Retourner un rsultat boolen dterminant lexistence.
Traitements : Il sagit de calculer lindice de llment du milieu du tableau et le
comparer avec Xf, sils sont gaux alors fin du traitement si non calculer de
nouveau le dbut et la fin du sous tableau ou se trouve Xf et refaire le mme
traitement jusqu' trouver Xf ou arriver un tat ou dbut est suprieur fin, donc
utilisation dune structure itrative condition darrt et au minimum on doit faire
une comparaison, do utilisation de la boucle REPETR JUSQU'A
Les paramtres formels de cette fonction sont Xf, Nf et Tf.
6. Algorithme de la fonction Recherche :
0) Dbut fonction recherche (Tf : TAB ; Nf, Xf : Entier) : Boolen
1) [Trouve Faux, Deb 1, Fin Nf] Rpter
Mil (Deb + Fin) Div 2
Si Tf[Mil] > Xf Alors Tableau de dclaration
Fin Mil - 1 des Objets locaux
Sinon
Si Tf[Mil] < Xf Alors Objets Type/Nature
Deb Mil + 1 i, Deb, Fin Entier
Sinon Trouve Boolen
Trouve Vrai
Finsi
Jusqu (Trouve = Vrai) OU (Deb > Fin)
2) Recherche Touve
3) Fin Recherche

7. Spcification de la procdure Affiche :


Rsultat : Afficher un commentaire pour dire si la valeur existe dans le tableau
ou non
Traitements : Il sagit dune structure conditionnelle suivant la valeur de Veriff,
on affiche un commentaire
Les paramtres formels de cette procdure sont Veriff

-14-
Mr Bassem Guetif L S Mhamdia

8. Algorithme de la procdure Affiche :


0) Dbut procdure Affiche (Veriff : Boolen)
1) Si Veriff = vrai Alors
Ecrire (X," existe dans le tableau")
Sinon
Ecrire (X," nexiste pas dans le tableau")
Finsi
2) Fin Affiche

-15-