Vous êtes sur la page 1sur 9

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

Vous aimerez peut-être aussi