On désigne par "tri" l'opération consistant à ordonner un ensemble d'éléments en fonction de clés sur lesquelles est définie une relation d'ordre. Les algorithmes de tri ont une grande importance pratique. Ils sont fondamentaux dans certains domaines, comme l'informatique de gestion où l'on tri de manière quasi-systématique des données avant de les utiliser.
Dans la suite, je vais donner l'implémentation en Pascal des tris élémentaires à savoir le tri à bulles, le tri par insertion et le tri par sélection.
I. Tri à bulles
PROCEDURE
permuter(var
t : tab ;indice1 :integer
;indice2 :integer
);
Var
aux :integer
;
Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
end
;
PROCEDURE
tri_bulle(var
t: tab; n:integer
);
var
i,j, aux:integer
;
begin
for
i:= n downto
1
do
for
j:= 1
to
i-1
do
if
(t[j] < t[j+1
] ) then
permuter(t,j,j+1
);
end
;
II. Tri par insertion
PROCEDURE
permuter(var
t : tab ;indice1 :integer
;indice2 :integer
) ;
Var
aux :integer
;
Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
end
;
PROCEDURE
tri_insertion(var
t :tab ; n :integer
)
Var
i ,k: integer
;
Begin
For
i:= 2
to
n do
Begin
k:=i;
while
(( k > 1
) and
( t[k] < t[k-1
] ) ) do
begin
permuter(t,k,k-1
);
k :=k-1
;
end
;
end
;
end
;
III. Tri par sélection
PROCEDURE
permuter (var
t : tab ;indice1 :integer
;indice2 :integer
);
Var
aux :integer
;
Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
End
;
FUNCTION
recherche_position_min(t : tab ;i :integer
) :integer
;
var
min ,j:integer
;
begin
posMin:=i;
for
j:=i+1
to
n do
if
( t[j] < t[posMin]) then
posMin:=j;
recherche_position_min := posMin ;
end
;
PROCEDURE
tri_selection(VAR
t :tab) ;
Var
i , Indice_Minimum : integer
:
begin
For
i :=1
to
n do
Begin
Indice_Minimum := recherche_position_min(t,i);
permuter(t,i,Indice_Minimum);
end
;
end
;
Aucun commentaire:
Enregistrer un commentaire