Lycée 15 octobre sejnene AS : 2008-2009
Chapitre VI : Les Traitements avancés
A- Les méthodes de tri
Introduction
Un algorithme de tri permet de mettre dans un ordre croissant ou décroissant des valeurs
stockées dans une structure de donnée comme un tableau en mémoire centrale. Ces valeurs
pourraient être de type numérique ou caractères. Il existe plusieurs méthodes de tri tels que le
tri par sélection, le tri à bulle et le tri par insertion.
I – Tri par sélection
Activité
Faire l'analyse d'un programme qui permet de trier un tableau T de n éléments dans l’ordre
croissant avec n comprise entre 3 et 15.
Principe
Sa consiste à trouver l'emplacement de l'élément le plus petit du tableau et le permuter avec le
premier élément du tableau. Ce même procédé est réutilisé pour trier le reste du tableau.
1- Analyse du programme principal
Nom : tri_selection
S L.D.E O.U.
4 Résultat = PROC Affichage (T, n) T
3 T = PROC Tri (T, n) n
2 T = PROC Remplir (T, n) Affichage
1 n = PROC Saisie (n) Tri
5 Fin tri_selection Remplir
Saisie
TDNT
Types
tab = tableau de 15 entiers
TDO
Objet Type/Nature Rôle
Affichage Procédure Permet d’afficher les éléments de T
T tab Tableau d’entier
n entier Taille du tableau
Tri Procédure Permet de trier les éléments de T
Remplir Procédure Permet de remplir le tableau
Saisie Procédure Permet de saisir la taille
Algorithme
0) Début tri_selection
1) PROC Saisie (n)
2) PROC Remplir (T, n)
3) PROC Tri (T, n)
4) PROC Affichage (T, n)
5) Fin tri_selection
4 Technique 1
Lycée 15 octobre sejnene AS : 2008-2009
2- Analyse de la procédure Affichage
DEF PROC Affichage (T : tab ; n : entier)
S L.D.E O.U.
Résultat = Affichage
1 Affichage = Pour i de 1 à n faire i
Ecrire (T[i])
FinPour
i = compteur
2 Fin affichage
T.D.O
Objet Type/Nature Rôle
i entier compteur
Algorithme
0) DEF PROC Affichage (T : tab ; n : entier)
1) Pour i de 1 à n faire
Ecrire (T[i])
FinPour
2) Fin Affichage
3- Analyse de la procédure tri – (Ordre croissant)
DEF PROC Tri (var T : tab ; n : entier)
S L.D.E O.U.
Résultat = T
1 T = Pour i de 1 à n-1 faire i
pmin ← FN recherche_pmin (T, n, i) pmin
PROC permuter (T[i], T[pmin]) recherche_pmin
FinPour permuter
i = compteur
2 Fin tri
T.D.O
Objet Type/Nature Rôle
i entier compteur
pmin entier position de l’élément minimal
recherche_pmin fonction retourne pmin
permuter procédure permuter 2 éléments
Algorithme
0) DEF PROC tri (var T : tab ; n : entier)
1) Pour i de 1 à n-1 faire
pmin ← FN recherche_pmin (T, n, i)
PROC permuter (T[i], T[pmin])
FinPour
2) Fin tri
4 Technique 2
Lycée 15 octobre sejnene AS : 2008-2009
3-a. Analyse de la fonction recherche_pmin
DEF FN recherche_pmin (T: tab ; n: entier ; i: entier): entier
S L.D.E O.U.
Résultat = recherche_pmin
2 recherche_pmin ← p p
1 p = [p ← i] Pour j de i+1 à n faire j
Si T[p] > T[j] alors
p←j
FinSi
FinPour
j = compteur
3 Fin recherche_pmin
T.D.O
Objet Type/Nature Rôle
p entier Position minimale
j entier Compteur
Algorithme
0) DEF FN recherche_pmin (T: tab ; n: entier ; i: entier): entier
1) p ← i
Pour j de i+1 à n faire
Si T[p] > T[j] alors
p←j
FinSi
FinPour
2) recherche_pmin ← p
3) Fin recherche_pmin
3-b. Analyse de la procédure permuter
DEF PROC permuter (var a : entier ; var b : entier)
S L.D.E O.U.
Résultat = (a, b)
3 b ← temp p
2 a←b
1 temp ← a
4 Fin permuter
T.D.O
Objet Type/Nature Rôle
temp entier Variable intermédiaire
Algorithme
0) DEF PROC permuter (var a : entier ; var b : entier)
1) temp ← a
2) a ← b
3) b ← temp
4) Fin permuter
4 Technique 3
Lycée 15 octobre sejnene AS : 2008-2009
4- Analyse de la procédure Remplir
DEF PROC Remplir (var T : tab ; n : entier)
S L.D.E O.U.
Résultat = T
1 T = Pour i de 1 à n faire i
T[i] = donnée ("Donner l’entier n° : ", i)
FinPour
i = compteur
2 Fin Remplir
T.D.O
Objet Type/Nature Rôle
i entier compteur
Algorithme
0) DEF PROC Remplir (var T : tab ; n : entier)
1) Pour i de 1 à n faire
Ecrire ("Donner l’entier n° : ", i)
Lire (T[i])
FinPour
2) Fin Remplir
5- Analyse de la procédure Saisie
DEF PROC Saisie (var n : entier)
S L.D.E O.U.
1 Résultat = Répéter
n = donnée ("Donner la taille du tableau entre 3 et 15")
Jusqu’à (n dans [3..15])
2 Fin Saisie
Algorithme
0) DEF PROC Saisie (var n : entier)
1) Répéter
Ecrire ("Donner la taille du tableau entre 3 et 15")
Lire (n)
Jusqu’à (n dans [3..15])
2) Fin Saisie
4 Technique 4
Lycée 15 octobre sejnene AS : 2008-2009
II – Tri à bulles
Activité
Faire l'analyse d'un programme qui permet de trier un tableau T de n éléments dans l’ordre
croissant avec n comprise entre 3 et 15.
Principe
Cet algorithme compare les éléments du tableau deux à deux, jusqu’à obtenir un tableau trié.
Dans ce cas, la répétition de plusieurs passages sur l'ensemble des données est nécessaire pour
l'obtention d'un tri complet. Cette méthode est appelée le tri à bulles, car les éléments mal
classés remontent dans la liste comme des bulles à la surface d'un liquide.
Analyse de la procédure Tri – (Ordre croissant)
DEF PROC Tri (var T : tab ; n : entier)
S L.D.E O.U.
Résultat = T
1 T = Répéter
[changer ← faux] Pour i de 1 à n-1 faire changer
Si T [i] > T [i+1] alors i
PROC permuter (T[i], T [i+1]) permuter
changer ← vrai
FinSi
FinPour
Jusqu’à (changer = faux)
i = compteur
2 Fin Tri
T.D.O
Objet Type/Nature Rôle
changer booléen Etat de permutation
i entier compteur
permuter procédure permuter 2 éléments
Algorithme
0) DEF PROC Tri (var T : tab ; n : entier)
1) Répéter
changer ← faux
Pour i de 1 à n-1 faire
Si T [i] > T [i+1] alors
PROC permuter (T[i], T [i+1])
changer ← vrai
FinSi
Fin pour
Jusqu’à (changer = faux)
2) Fin Tri
4 Technique 5
Lycée 15 octobre sejnene AS : 2008-2009
III – Tri par insertion
Activité
Faire l'analyse d'un programme qui permet de trier un tableau T de n éléments dans l’ordre
croissant avec n comprise entre 3 et 15.
Principe
Ce tri consiste à :
1- Considérer que les (i - 1) premiers éléments du tableau sont triés et placer le ième élément
à sa place parmi les (i - 1) déjà triés.
2- Répéter cette action jusqu’à traiter le dernier élément du tableau.
Analyse de la procédure Tri – (Ordre croissant)
DEF PROC Tri (var T : tab ; n : entier)
S L.D.E O.U.
Résultat = T
1 T = Pour i de 2 à n faire i
[p ← T [i], j ← i - 1] Tant que (j >= 1) et (p < T[j]) faire p
T [j + 1] ← T [j] j
j←j–1
FinTantque
T [j + 1] ← p
FinPour
i = compteur
2 Fin Tri
T.D.O
Objet Type/Nature Rôle
i entier compteur
p entier élément à insérer
j entier compteur
Algorithme
0) DEF PROC Tri (var T : tab ; n : entier)
1) Pour i de 2 à n faire
p ← T [i]
j←i-1
Tant que (j >= 1) et (p < T[j]) faire
T [j + 1] ← T [j]
j←j–1
FinTantque
T [j + 1] ← p
FinPour
2) Fin Tri
4 Technique 6
Lycée 15 octobre sejnene AS : 2008-2009
B- Les algorithmes de recherche
Introduction
La recherche d’un élément dans un tableau de valeurs est un traitement très utilisé en
informatique. Parmi les méthodes de recherche les plus connues, on trouve la recherche
séquentielle et la recherche dichotomique.
I – La recherche séquentielle
Activité
Faire l'analyse d'un programme qui permet de rechercher et d’afficher la première position
d’un élément v donné (si l’élément n’existe pas afficher : "L’élément v n’existe pas") dans un
tableau T de n éléments avec n comprise entre 3 et 15.
Principe
Cette méthode de recherche consiste à parcourir les éléments du tableau un par un jusqu'à
trouver la valeur à chercher ou arriver à la fin du tableau.
1- Analyse du programme principal
Nom : Recherche
S L.D.E O.U.
5 Résultat = PROC Afficher (v, pos) v
4 pos ← FN recherche_sequentielle (T, n, v) pos
3 v = Donnée ("Donner l’élément à chercher") Afficher
2 T = PROC Remplir (T, n) T
1 n = PROC Saisie (n) n
recherche_sequentielle
Remplir
6 Fin Recherche Saisie
TDNT
Types
tab = tableau de 15 entiers
TDO
Objet Type/Nature Rôle
Afficher Procédure Permet d’afficher la position de l’élément à chercher
T tab Tableau d’entier
n entier Taille du tableau
v entier L’élément à chercher
recherche_sequentielle Fonction Retourne la position de l’élément à chercher
Remplir Procédure Permet de remplir le tableau
Saisie Procédure Permet de saisir la taille
pos entier Position de l’élément à chercher
Algorithme
0) Début Recherche
1) PROC Saisie (n)
2) PROC Remplir (T, n)
3) Ecrire ("Donner l’élément à chercher")
Lire (v)
4) pos ← FN recherche_sequentielle (T, n, v)
5) PROC Afficher (v, pos)
6) Fin Recherche
4 Technique 7
Lycée 15 octobre sejnene AS : 2008-2009
2- Analyse de la procédure Afficher
DEF PROC Afficher (v : entier ; pos : entier)
S L.D.E O.U.
Résultat = Afficher
1 Afficher = Si (pos = 0) alors
Ecrire ("l’élément ", v, " n’existe pas")
Sinon Ecrire ("l’élément ", v, " se trouve à la position ", pos)
FinSi
2 Fin Afficher
Algorithme
0) DEF PROC Afficher (v : entier ; pos : entier)
1) Si (pos = 0) alors
Ecrire ("l’élément ", v, " n’existe pas")
Sinon Ecrire ("l’élément ", v, " se trouve à la position ", pos)
FinSi
2) Fin Afficher
3- Analyse de la fonction recherche_sequentielle
DEF FN recherche_sequentielle (T: tab ; n: entier ; v: entier): entier
S L.D.E O.U.
Résultat = recherche_sequentielle
2 recherche_sequentielle ← p p
1 p = [p ← 0, i ← 1] Tant que ((i <= n) et (p = 0)) i
Si (T[i] = v) alors
p←i
Sinon i ← i + 1
FinSi
FinTantque
i = compteur
3 Fin recherche_sequentielle
T.D.O
Objet Type/Nature Rôle
p entier Position de l’élément à chercher
i entier Compteur
Algorithme
0) DEF FN recherche_sequentielle (T: tab ; n: entier ; v: entier): entier
1) p ← 0
i←1
Tant que ((i <= n) et (p = 0))
Si (T[i] = v) alors
p←i
Sinon i ← i + 1
FinSi
FinTantque
2) recherche_sequentielle ← p
3) Fin recherche_sequentielle
Remarque : Pour les procédures Remplir et Saisie, voir partie Méthodes de tri.
4 Technique 8
Lycée 15 octobre sejnene AS : 2008-2009
II – La recherche dichotomique
Activité
Faire l'analyse d'un programme qui permet de rechercher et de vérifier l’existence d’un
élément v donné dans un tableau T de n éléments avec n comprise entre 3 et 15.
Principe
Cette méthode de recherche consiste à chercher en divisant le tableau d’éléments trié en deux
parties égales et vérifier dans quelle partie figurerait la valeur recherchée. Ce traitement est
répété jusqu’à trouver la valeur à chercher ou l’impossibilité de diviser le tableau.
Analyse de la fonction recherche_dichotomique
DEF FN recherche_dichotomique (T: tab ; n: entier ; v: entier): booléen
S L.D.E O.U.
Résultat = recherche_dichotomique
2 recherche_dichotomique ← trouve trouve
1 trouve = [trouve ← faux, g ← 1, d ← n] répéter g
m ← (g + d) DIV 2 d
Si (v = T[m]) alors trouve ← vrai m
Sinon Si (v > T[m]) alors g ← m + 1
Sinon d ← m – 1
FinSi
Jusqu’à ((trouve = vrai) ou (g > d))
3 Fin recherche_dichotomique
T.D.O
Objet Type/Nature Rôle
trouve booléen Etat de la recherche
g entier Indice de gauche
d entier Indice de droite
m entier Indice du milieu
Algorithme
0) DEF FN recherche_dichotomique (T: tab ; n: entier ; v: entier): booléen
1) trouve ← faux
g←1
d←n
Répéter
m ← (g + d) DIV 2
Si (v = T[m]) alors trouve ← vrai
Sinon Si (v > T[m]) alors g ← m + 1
Sinon d ← m – 1
FinSi
Jusqu’à ((trouve = vrai) ou (g > d))
2) recherche_dichotomique ← trouve
3) Fin recherche_dichotomique
4 Technique 9