Vous êtes sur la page 1sur 4

Mme Saoussen Maloul

Chapitre VI : Les traitements avancs


I- Introduction :
Activit : Soit trier puis afficher un tableau Tab de N entiers avec 3N 15 dans lordre croissant.

Les actions raliser sont :


- Saisie : Saisir N entiers et les ranger dans le tableau Tab.
- Classement : Classer les N entiers du tableau Tab dans lordre croissant.
- Affichage : Afficher le tableau tri.
Un algorithme de tri est un algorithme qui permet dorganiser une collection dobjets selon un ordre dtermin.
Les objets trier font partie dun ensemble muni dune relation dordre (exemple : entiers, rels. Caractres)

II-Les mthodes de tri:


1- Tri par slection:

Il consiste :
- Se pointer sur la premire case du tableau et parcourir le reste du tableau pour reprer lindice du minimum
(dans le cas de tri en ordre croissant sinon lindice du maximum dans le cas de tri dcroissant).
- Comparer ce minimum (ou maximum) avec le contenu de la premire case. Sils ne sont pas dans le bon ordre,
les permuter.
- Le sous-tableau allant de 2 n est priori non tri, on applique les 2 tapes ci-dessus jusqu la case (n-1).
Remarque:
- On fait au maximum (n-1) permutations.
- On fait (n-1) + (n-2)+ (n-3)+..+2+1= n(n-1)/2 comparaisons.
Analyse :
Nom : Tri_tableau
3
2
1
4

Rsultat= Proc Afficher (Tab,N)


T= Proc Tri_Selection (Tab,N)
T,N= Proc Saisie (Tab,N)
Fin Tri_tableau

TDNT

TDO Globaux

Type
T= Tableau de 6 entiers

Objet
Tab
N
Saisie,Tri_Selection,Afficher

Type/Nature
T
Entier
Procdures

DEF PROC Saisie (Var a :Entier ; Var V :T)


2

Rsultat= Pour i de 1 a Faire


V[i]= Donne( Taper un entier )
FinPour
Rpter
a= Donne ( Taper le nombre dlments )
Jusqu a dans [3..15]
Fin Saisie

TDO locaux :
Objet

Type/Nature

Entier

Rle
Compteur

DEF PROC Tri_Selection (VAR Tab :T ; N :Entier)


1

Rsultat= Pour i de 1 n-1 Faire


Ppm
Fn Pospremmin(Tab,i, N)
Si Tab[Ppm] Tab[i] Alors
aux
Tab[ppm]
Tab[ppm]
Tab[i]
Tab[i]
aux
FinSi
FinPour
Fin Tri_Selection

TDO locaux
Objet
i
Pospremmin
aux

DEF PROC Afficher (V :T, N :Entier)


1
2

Tableau de dclaration des objets locaux :

Rsultat= Pour j de 1 N Faire crire(V[j])


FinPour
Fin Afficher

Anne Scolaire : 2008-2009

Type/Nature
Entier
Fonction
Entier

Objet
j

-1-

Type/Nature
Entier

Rle
Compteur

LPS- 4 Tech 2-

Mme Saoussen Maloul


DEF FN PosPremMin (V :T ; a,b :Entier) : Entier
1

Rsultat= Pospremmin
Posmin
[Posmin
a] Pour j de a+1 b Faire
Si V[j] V[posmin] Alors
Posmin
j
FinSi
FinPour
Fin PosPremMin

TDO locaux
Objet
J, Posmin

Type/Nature
Entier

Algorithme du programme principal :

Algorithme du sous-programme Saisie:

0) Dbut Tri_Tableau
1) Proc Saisie (Tab,N)
2) Proc Tri_Selection (Tab,N)
3) Proc Afficher (Tab,N)
4) Fin Tri_tableau

0) DEF PROC Saisie (Var a : Entier ; Var V :T)


1) Rpter
crire( Taper le nombre dlments )
Lire(a)
Jusqu a dans [3..15]
2) Pour i de 1 a Faire
crire( Taper un entier )
Lire (V[i])
FinPour
3) Fin Saisie.

Algorithme du sous-programme PosPremMin:


0) DEF FN PosPremMin (V:T ; a,b:Entier) :Entier
1) [Posmin
a] Pour j de a+1 b Faire
Si V[j] V[posmin] Alors
Posmin
j
FinSi
FinPour
2) Pospremmin
Posmin
3) Fin PosPremMin.

Algorithme du sous-programme Tri_Slection:


0) DEF PROC Tri_Slection (Var a: Entier ; Var V:T)
1) Pour i de 1 n-1 Faire
Ppm
Fn Pospremmin(Tab,i, N)
Si Tab[Ppm] Tab[i] Alors
aux
Tab[ppm]
Tab[ppm]
Tab[i]
Tab[i]
aux
FinSi

Algorithme du sous-programme Afficher:


0) DEF PROC Afficher (V :T, N :Entier)
1) Pour j de 1 N Faire
crire(V[j])
FinPour
2) Fin Afficher

FinPour
3) Fin Tri_Slection.

2- Tri bulles:
Il consiste : - Parcourir le tableau
- Au cours du parcours, comparer Tab[i] avec Tab[i+1], sils ne sont pas dans le bon ordre, les permuter.
- Recommencer Jusqu faire un parcours sans permutation ou un tableau non permut de un seul lment.
Remarque: On fait au maximum (n-1) + (n-2)+ (n-3)+..+2+1= n(n-1)/2 comparaisons et autant de permutations.

Analyse :

DEF PROC Tri__bulles(VAR Tab :T ; N :Entier)


1
Rsultat= Rpter
[change
Faux]
Pour i de 1 n-1 Faire
Si Tab[i]> Tab[i+1] Alors
aux
Tab[i]
Tab[i]
Tab[i+1]
Tab[i+1]
aux
change
Vrai
2
FinSi
FinPour
n
n-1
Jusqu [n=1] ou non change
Fin Tri__bulles

TDO locaux
Objet
change
i
aux

FinSi

Algorithme du sous-programme Tri__bulles:


0) DEF PROC Tri__bulles (Var a : Entier ; Var V :T)
1) Rpter
change

FinPour

N
n-1
Jusqu [n=1] ou non change

3) Fin Tri__bulles.
Algorithme du programme principal :
0) Dbut Tri_Tableau
1) Proc Saisie (Tab,N)
2) Proc Tri__bulles (Tab,N)
3) Proc Afficher (Tab,N)
4) Fin Tri_tableau

Faux

Pour i de 1 n-1 Faire

Si Tab[i]> Tab[i+1] Alors


aux
Tab[i]
Tab[i]
Tab[i+1]
Tab[i+1]
aux
change
Vrai

Anne Scolaire : 2008-2009

Type/Nature
boolen
Entier
Entier

-2-

LPS- 4 Tech 2-

Mme Saoussen Maloul

3- Tri par insertion:

Il consiste :
- Chercher la position du ime lment dans la partie de 1 i tout en considrant que cette partie est trie
et cherchant la garder trie. Si je dois changer lemplacement de cet i me lment un emplacement j,
alors dcaler droite tous les lments de j i-1.
- Insrer ensuite l ime lment dans la case j.
- Cette mthode de tri ncessite lutilisation dune variable intermdiaire pour conserver la valeur
insrer.
Remarque: On fait au maximum (n-1) + (n-2)+ (n-3)+..+2+1= n(n-1)/2 comparaisons et autant de dcalages.

Analyse :

DEF PROC Tri_par_insertion (VAR Tab :T ; N :Entier)


1

Rsultat= Pour i de 2 n Faire


temp
Tab[i]
j
i
Proc Dcaler(Tab, j, temp)
Tab[j]
temp
FinPour
Fin Tri_par_insertion

TDO locaux
i
temp
j
Dcaler

DEF PROC Dcaler (VAR V :T ; Var x :Entier ; y :Entier)


1

Rsultat= Tant que V[x-1]> y Faire


V[x]
V[x-1]
x
x-1
Fin Tant Que
Fin Dcaler

Algorithme du module Tri_par_insertion:


0) DEF PROC Tri_par_insertion (Var V :T, a : Entier )
1) Pour i de 2 n Faire
temp
V[i]
j
i
Proc Dcaler(V, j, temp)
Tab[j]
temp
FinPour
2) Fin Tri_par_insertion.

Algorithme du sous-programme Dcaler:


0) DEF PROC Dcaler (VAR V:T ; Var x :Entier ;
y:Entier)
1) Tant que V[x-1]> y Faire
V[x]
V[x-1]
x
x-1
Fin Tant Que
4) Fin Dcaler.

Algorithme du programme principal :


0) Dbut Tri_Tableau
1) Proc Saisie (Tab,N)
2) Proc Tri_par_insertion (Tab,N)
3) Proc Afficher (Tab,N)
4) Fin Tri_tableau

-2-

Objet
I
Temp
j
Dcaler

Type/Nature
Entier
Entier
Entier
Procdure

III-Mthodes de recherche:

1- La recherche squentielle:
La recherche squentielle est un algorithme qui permet de vrifier lexistence dun lment dans une srie
dlments. Cette mthode consiste examiner les lments de la liste un par un, jusqu trouver la valeur
recherche ou atteindre la fin de la liste.
DEF FN Recherche_Squentielle (V :T, N, C :Entier) : Boolen
2
Rsultat= Recherche_Squentielle
Trouve
Trouve
1
[Trouve
Faux, i
1]
i
Rpter
Si V[i] <> c Alors
i
i+1
Sinon
trouve
Vrai
FinSi
Jusqu (Trouve) OU (i n)
3
Fin Recherche_Squentielle

Tableau de dclaration des objets locaux :


Objet

Type/Nature

Entier

Trouve

Boolen

Rle
Compteur

Algorithme du module Recherche_Squentielle:


0) DEF FN Recherche_Squentielle ( V :T, n, c : Entier ) : Boolen
1) [Trouve
Faux, i
1]
Rpter
Si V[i] <> c Alors
i
i+1
Sinon
trouve
Vrai
FinSi
Jusqu (Trouve) OU (i n)
2) Recherche_Squentielle
Trouve
3) Fin Recherche_Squentielle.

2- La recherche dichotomique:
La recherche dichotomique est un algorithme itratif o lespace de recherche est limit lune de deux parties
du tableau. Il faut noter que cette mthode nest applique que sur un tableau tri.
DEF FN Recherche_Dichotomique (V :T, n, C :Entier) : Boolen
Rsultat= trait
2
Trait= Si V[i]= c Alors
Recherche_Dichotomique
Vrai
Sinon Recherche_Dichotomique
Faux
FinSi
1
[a
1, b
n]
a
Rpter
b
i
(a +b) Div 2
i
Si V[i] > c Alors b
i-1
Sinon a
i+1
FinSi
Jusqu (V[i]=c) OU (a > b)
3
Fin Recherche_ Dichotomique

Tableau de dclaration des objets locaux :


Objet

Type/Nature

Entier

a,b

Entier

Rle
Compteur

Algorithme du module Recherche_ Dichotomique:


0) DEF FN Recherche_ Dichotomique ( V :T, n, c : Entier ) : Boolen
1) [a
1, b
n]
Rpter
i
(a +b) Div 2
Si V[i] > c Alors b
i-1
Sinon a
i+1
FinSi
Jusqu (V[i]=c) OU (a > b)
2) Si V[i]= c Alors
Recherche_Dichotomique
Vrai
Sinon Recherche_Dichotomique
Faux
FinSi
3) Fin Recherche_ Dichotomique

Anne Scolaire : 2008-2009

-4-

LPS- 4 Tech 2-