Vous êtes sur la page 1sur 7

Les algorithmes de tri et de

recherche
Dfinition : un algorithme de tri est un algorithme qui permet d'organiser une collection
d'objet selon un ordre dtermin (l'alphabet des noms, l'ordre des valeurs entires, ).
Dans ce chapitre nous allons dcouvrir trois algorithmes de tri :
Tri par slection
Tri bulles
Tri par insertion

Activit : Ecrire une analyse et un algorithme dun sous programme qui permet de
trier (classer) les lments du tableau T dans l'ordre croissant.

I) Les algorithme de tri


1) Tri par slection
a) Principe :
partir du premier lment, parcourir le tableau, chercher le plus petit lment et
l'changer avec le premier
puis de repartir du second lment, parcourir le tableau, chercher le plus petit
lment et l'changer avec le second, etc ..
b) Solution de lactivit
Analyse et Algorithme de la procdure Tri_Selection
DEF Proc Tri_Selection (var T : tab ; n :
entier) 0) DEF Proc Tri_Selection (var T : tab ; n : entier)
Rsultat =[..] 1) Pour i de 1 n-1 faire
Pour i de 1 n-1 faire m <----- FN Pos_min (T,i,n)
m <----- FN Pos_min (T,i,n) si T[m] <> T[i ] alors
si T[m] <> T[i ] alors proc Permuter (T[i],T[m])
proc Permuter (T[i],T[m]) Finsi
Finsi Fin pour
T.D.O
Fin pour 2) Fin Tri_Selection
Objet Type/Nature
i, m Entier
Pos_min Fonction
Permuter Procdure

Analyse et Algorithme de la fonction Pos_min

1
DEF FN Pos_min (T : tab ; n, i : entier) : entier 0) DEF FN Pos_min (T : tab ; n, i : entier) : entier
Rsultat =[..] 1) Min <---- i
Min <---- i 2) Pour j de i+1 n faire
Pour j de i+1 n faire si T[j] < T[Min] alors
si T[j] < T[Min] alors Min <----- j
Min <----- j Finsi
Finsi Fin pour
Fin pour 3) Pos_min <---- Min
Pos_min <---- Min 4) Fin Pos_min
T.D.O

Objet Type/Nature
Min, i, j Entier

Analyse et Algorithme de la procdure Permuter


DEF Proc permuter (var a, b : entier) 0) DEF Proc permuter (var a, b : entier)
temp a 1) temp a
a b 2) a b
b temp 3) b temp
T.D.O : 4) Fin Permuter

Objet Type/Nature
temp Entier

2) Tri bulles
a) Principe : le tri bulles consist faire remonter le plus grand lment du tableau
en comparant les lments successifs. Cest--dire quon va comparer le 1er et le 2ime
lment du tableau, sils ne sont pas dans le bon ordre, on les permute, on passe ensuite au
2ime et 3ime, puis au 3ime et 4ime et ainsi de suite jusquau (n-1)ime et le nime
lments.
A la fin du premier parcours, on aura pouss le plus grand lment du tableau vers sa place
finale qui est le nime lment du tableau. On recommence cette opration en parcourant de 1
n-1 puis de 1 n-2 et ainsi de suite.
On arrte quand la partie trier est rduite un seul lment ou que le tableau est devenu tri
et dans ce cas on doit avoir un indicateur qui donne cette information. En effet, lide est de
vrifier si lors du dernier parcours aucune permutation na t faite ce qui signifie le tableau
est devenu tri.

2
b) Solution de lactivit
Analyse et Algorithme de la procdure tri__bulle
DEF Proc Tri__bulle (var T : tab ; n : 0) DEF Proc Tri__bulle (var T : tab ; n :
entier) entier)
Rpter 1) Rpter
echange <---- faux echange <---- faux
Pour i de 1 n-1 faire Pour i de 1 n-1 faire
Si (T[i] > T[i+1]) alors Si (T[i] > T[i+1]) alors
Proc permuter (T[i], T[i+1]) Proc permuter (T[i], T[i+1])
echange <---- vrai echange <---- vrai
Fin si Fin si
Fin pour Fin pour
n <---- n-1 n <---- n-1
Jusqu (n = 1) ou (echange = faux) Jusqu (n = 1) ou (echange = faux)
2) Fin tri__bulle
T.D.O

Objet Type/Nature
i Entier
Permuter Procdure
echange Fonction

3) Tri par insertion

a) Principe : c'est le tri qu'on l'utilise lorsqu'on a des dossiers classer. On prend un
dossier et on le met sa place parmi les dossiers dj tris, puis on recommence avec le
dossier suivant et ainsi de suite.
Le principe est le suivant :
On suppose que les lments de 1 (i-1) du tableau sont tris et on place (on insre) l'lment
ni sa bonne place parmi les (i-1) dj tris.
1) Pour chaque lment n i insrer :
Utiliser une variable intermdiaire "temp" pour conserver la valeur insrer.
Dplacer les lments (T[i-1], T[i-2], .) vers la droite tant que la valeur
insrer est suprieure celle de "temp".
Affecter la variable "temp" la case laiss libre (vide) aprs le dcalage.
2) Rpter l'action 1 jusqu' atteindre la fin du tableau.
b) Solution de lactivit
Analyse et Algorithme de la procdure tri_par_insertion

3
DEF Proc Tri_par_insertion (var T : tab ; 0) DEF Proc Tri_par_insertion (var T : tab ; n :
n : entier) entier)
Pour i de 2 n faire 1) Pour i de 2 n faire
Si T[i-1]>T[i] alors Si T[i-1]>T[i] alors
temp <---- T[i] temp <---- T[i]
Proc Dcaler (T, i, temp, p) Proc Dcaler (T, i, temp, p)
T[p] <----- temp T[p] <----- temp
Finsi Finsi
Fin pour Fin pour
2) Fin Tri_insertion
T.D.O
Objet Type/Nature
i , temp, p Entier
Dcaler Procdure

Analyse et Algorithme de la procdure Dcaler


DEF Proc Dcaler (var T : tab ; x,y : entier ; 0) DEF Proc Dcaler (var T : tab ; x,y : entier ;
var z : entier) var z : entier)
Tant que (z>1) et (T[z-1]> y) faire 1) Tant que (z>1) et (T[z-1]> y) faire
T[z] <---- T[z-1] T[z] <---- T[z-1]
z<---- z-1 z<---- z-1
Fin tant que Fin tant que
z<---- i z<---- i
2) Fin Dcaler

II) Les algorithme de recherche


4
Activit :
Ecrire un programme nomme recherche_lment qui permet de remplir un tableau T par n
entiers (5 n 30) puis saisir un valeur v, ensuite il appelle une fonction recherche qui cherche si v
existe ou non dans le tableau T.
Solution de lactivit
Programme Principal

Analyse :
Rsultat = crire ("la valeur ", exist)
exist <----- FN recherche (T,n,v)Tableau de dclaration des nouveaux types
Proc remplir (T,n)
Types
V = donne ("saisir la valeur chercher ") Tab = Tableau de [1..30] dentier
Algorithme Tableau de dclaration des objets :

0) Dbut recherche_lment Objet Type/Nature


1) Proc Remplir (T,n) n, V Entier

2) crire ("Entrer un entier ") lire (V) T Tab

3) exist FN recherche (T,n,V) Remplir Procdure

4) crire ("la valeur ", exist) recherche Fonction

5) Fin recherche_lment
Remarque : il existe deux mthodes de rechercher :
La recherche squentielle
La recherche dichotomique.
1) La recherche squentielle :
a) Principe : La mthode de recherche squentielle dun lment dans un tableau consiste
parcourir le tableau lment par lment en le comparant avec llment chercher jusqu trouve
ce dernier ou atteindre la fin du tableau.
b) Analyse et algorithme de la fonction recherche

Analyse de la fonction recherche squentielle

5
Analyse :
Rsultat = [..]
Si T[i]= v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
Fin si
i<---- 0
Rpter
i <----- i+1
Jusqu (T[i]=v) ou (i=n)
Algorithme
0) DEF FN recherche (T :tab ;n,v :entier) : chane de caractre
1) i 0 rpter
i i+1
Jusqu (T[i]=v) ou (i=n)
Tableau de dclaration des objets :
2) si T[i] = v alors
recherche <----- "existe" Objet Type/Nature
i Entier
Sinon
recherche <----- "nexiste pas"
Fin si
5) Fin recherche
2) La recherche dichotomique :
a) Principe :
1) Initialiser les indices des bornes dbut 1 et fin n
2) Diviser les lments du tableau en deux parties (gauche et droite).
3) Vrifier quelle partie appartient l'lment recherch : s'il appartient la partie gauche alors
cette partie sera l'intervalle de recherche donc modifier l'indice de la borne droite (fin milieu
-1). Sinon la partie droite sera lintervalle de recherche et donc modifier l'indice de la borne
gauche (dbut milieu+1).
Rpter les tapes 1) et 2) jusqu' soit trouver l'lment recherch ou bien l'indice de la borne
gauche sera > celui de la borne droite.

Analyse de la fonction recherche dichotomique

6
Analyse :
Rsultat = [..]
Si T[p]= v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
[debut <---- 1, fin <---- n]
Rpter
p <----- (debut + fin) div 2
si v < T[p] alors
fin <----- p - 1
Sinon
debut <----- p + 1
Fin si
Jusqu (T[p]=v) ou (debut > fin)
Algorithme
0) DEF FN recherche (T :tab ;n,v :entier) : chane de caractre
1) [debut <---- 1, fin <---- n]
Rpter
p <----- (debut + fin) div 2
si v < T[p] alors Tableau de dclaration des objets :
fin <----- p - 1 Objet Type/Nature
Sinon p Entier
debut <----- p + 1
Fin si
Jusqu (T[p]=v) ou (debut > fin)
2) si T[p] = v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
Fin si
5) Fin recherche

III) Applications:
On dispose dun tableau ABONNE de noms ainsi quun tableau TEL

Vous aimerez peut-être aussi