Bonjour tu peux voir mon cours :
<gras>LES METHODES DE TRI D’UN TABLEAU
Le mot TRI en informatique désigne l’action d’ordonner des objets selon un critère (croissant/décroissant). Un tableau est trié (ordonné) lorsqu'il existe une relation entre ses différents éléments. On parle de :
- Tri croissant : l'élément n° i <= l'élément n° i+1.
- Tri décroissant : l'élément n° i >= l'élément n° i+1.
Dans ce cours on va voir trois méthodes de TRI connues sous les noms de Tri par sélection, tri à bulles et tri par insertion.
I/ Tri par Sélection :
Principe :
1- Comparer tout les éléments du tableau pour sélectionner le plus petit/grand.
2- Permuter le plus petit/grand élément trouvé avec le premier élément du tableau.
3- Refaire les étapes 1 et 2 : chercher le plus petit/grand élément du tableau sauf le premier puis l’échanger avec le second élément et ainsi de suite.
Ce processus est répété (N-1) fois sachant que N = nombre d’élément du tableau qu’on veut trier.
Program TriSelect;
Uses wincrt;
Const nmax=100;
Type tab=array[1..nmax]of integer;
var t:tab;
n:integer;
Procedure saisie (Var V : TAB ; Var TAILLE : integer) ;
var i:integer;
begin
repeat
write('Donner la taille du tableau : ');readln(taille);
until taille in [1..Nmax];
for i:=1 to taille do
begin
write('V[',i,']= ');readln(v[i]);
end;
end;
Procedure select(Var V : TAB ; TAILLE : integer);
var i, j, aux, posmin:integer;
begin
for i:=1 to (TAILLE-1) do
begin
posmin := i;
for j :=i+1 to TAILLE do
if V[j]<V[posmin] then
posmin:= j;
if posmin <>i then
begin
Aux := V[i] ;
V[i]:= V[posmin];
V[posmin] := Aux ;
end;
end;
end;
Procedure affichage(v:tab;taille:integer);
var i:integer;
begin
writeln('Après le tri croissant le contenu du tableau est : ');
for i:=1 to n do
writeln('v[',i,']= ',v[i]);
end;
BEGIN
saisie(T,n);
select(T,n);
affichage(T,n);
END.
II/ Tri à bulles :
Principe :
C’est une méthode de tri qui consiste à comparer les éléments du tableau par paires adjacentes.
On peut la traduire par l’algorithme formel suivant :
1- Comparer la première paire d’éléments,
2- Si T[1]>T[2] alors permuter T[1] et T[2],
3- Aller à la paire suivante et répéter les étapes 1 et 2 jusqu’à comparer la dernière paire,
4- Si une permutation a été effectuée (ou plusieurs) alors répéter ce qu’on vient de faire, sinon les éléments du tableau sont triés.
procedure bulle(var v:tab;taille:integer);
var i, aux:integer;
trouve:boolean;
begin
repeat
trouve:=false;
for i:=1 to (taille-1) do
begin
if v[i]>v[i+1] then
begin
Aux := V[i];
V[i] := V[i+1];
V[i+1] := Aux;
trouve:=true;
end;
end;
until (trouve=false);
end;
III/ Tri par Insertion :
Principe :
C’est une méthode de tri qui consiste à prendre les éléments de la liste un par un puis insérer chacun dans sa bonne place de façon que les éléments traités forment une sous liste triée.
Cette méthode peut se traduire par l’algorithme formel suivant :
1- On commence par le deuxième élément.
2- Comparer l’élément choisi avec tous ses précédents dans la liste et l’insérer dans sa bonne place.
3- Répéter l’étape 2 pour l’élément suivant jusqu'à arriver au dernier.
Pour i De 2 A TAILLE Faire
Trouve <-- Faux
Pose <-- i
j <-- i-1
TantQue (j>=1) ET (Trouve = Faux) Faire
Si V[Pose]<V[j]Alors
Aux <-- V[j]
V[j] <-- V[Pose]
V[Pose] <-- Aux
Pose <-- Pose-1
j <-- j-1
Sinon
Trouve <-- Vrai
FinSi
Fin TantQue
FinPour
FIN INSERTION