I.
Tri par sélection :
Enoncé : Soit à trier un tableau T de n entiers (3<=n<=30) dans l’ordre croissant en utilisant la méthode de tri par sélection.
1. Analyse :
Analyse de la procédure saisie
DEF PROC saisie (var t :tab ; var n :entier) Résultat=t,n
Pour i de 1àn faire T[i]= donnée (¨t[¨,i, ¨ ]= ¨) Fin pour
Repeter
N=donnée(¨Donner la taille du tableau¨) Jusqu’a n dans [3..30]
Analyse de la procédure permuter DEF PROC permuter(var x,y :entier) Résultat=x,y
Aux ← x X ← y Y ← aux
Analyse de la fonction pos_min
DEF FN pos_min(v :tab ;m :entier) :entier Résultat=posmin
Posmin ← m
Pour k de m+1 à n faire
Si v[k] < v[posmin] alors posmin :=k Finsi
Fin pour
Pos_min ← posmin
Analyse de la procédure tri_selection DEF PROC tri_selection (var t :tab) Résultat=T trié
Pour i de 1 à n faire Pm ← pos_min(t,i)
Si t[pm]<> t[i] alors permuter(t[pm],t[i]) Finsi
Finpour
Analyse de la procédure affiche DEF PROC Affiche( t :tab) Résultat = Affichage Pour i de 1 à n faire Ecrire(t[i], ¨ ¨) finpour Analyse du pp
Résultat = Proc Affiche(t) Proc tri_selection(t) Proc Saisie(t,n) 2. Algorithmes :
Algorithme de la procedure Saisie
0) DEF PROC Saisie(var t :tab ; var n :entier)
1) Repeter
Ecrire(¨Donner la taille du tableau¨), lire (n)
Jusqu’a n dans [3..30]
2) Pour i de 1àn faire
Ecrire (¨t[¨,i, ¨ ]= ¨), Lire(T[i]) Fin pour
3) Fin Saisie
Algorithme de la procedure Permuter 0) DEF PROC permuter(var x,y :entier) 1) aux ← x
2) X ← y 3) Y ← aux 4) Fin Permuter
Algorithme de la fonction Pos_min
0) DEF FN pos_min(v :tab ;m :entier) :entier 1) Posmin ← m
2) Pour k de m+1 à n faire Si v[k] < v[posmin] alors posmin :=k
Finsi Fin pour
3) Pos_min ← posmin 4) Fin Pos_min
Algorithme de la procedure tri_selection 0) DEF PROC tri_selection (var t :tab) 1) Pour i de 1 à n-1 faire
pm ← pos_min(t,i) Si t[pm]<> t[i] alors permuter(t[pm],t[i]) Finsi
Finpour
2) Fin tri_selection
Algorithme de la procedure Affiche 0) DEF PROC Affiche( t :tab) 1) Pour i de 1 à n faire Ecrire(t[i], ¨ ¨) Finpour
2) Fin Affiche Algorithme du pp
0) Début Tri_select 1) Proc saisie(t,n) 2) Proc Tri_selection(t) 3) Proc affiche(t) 4) Fin Tri_select
Les algorithmes de tri et de
4 ème
S-e Chapitre 4 : Les algorithmes de tri et de recherche xp
3. Traduction Pascal :
program tri_select;
uses wincrt;
type
tab=array[1..30] of integer;
var t:tab;
n:integer;
procedure saisie(var t:tab;var n:integer);
var i:integer;
begin repeat
write('Donner la taille du tableau '); readln(n);
until n in [1..30];
for i:=1 to n do begin
write('t[',i,']= ');
readln(t[i]);
end;
end;
procedure tri_selection(var t:tab);
var
i,pm:integer;
function pos_min(v:tab;m:integer):integer;
var
posmin,k:integer;
begin posmin:=m;
for k:=m+1 to n do
if t[k]<t[posmin] then posmin:=k;
pos_min:=posmin;
end;
procedure permuter(var x,y:integer);
var
aux:integer;
begin aux:=x;
x:=y;
y:=aux;
end;
begin
for i:= 1 to n-1 do begin
pm:=pos_min(t,i);
if t[pm]<>t[i] then permuter(t[pm],t[i]);
end;
end;
procedure affiche ( t:tab);
var i:integer;
begin
for i:= 1 to n do write(t[i],' ');
end;
begin saisie(t,n);
tri_selection(t);
affiche(t);
end.
II.
Tri à bulles :
Enoncé : Soit à trier un tableau T de n entiers (3<=n<=30) dans l’ordre croissant en utilisant la méthode de tri à bulles.
1.
Analyse :
Analyse de la procédure saisie
DEF PROC saisie (var t :tab ; var n :entier) Résultat=t,n
Pour i de 1àn faire T[i]= donnée (¨t[¨,i, ¨ ]= ¨) Fin pour
Repeter
N=donnée(¨Donner la taille du tableau¨) Jusqu’a n dans [3..30]
Analyse de la procédure permuter DEF PROC permuter(var x,y :entier) Résultat=x,y
Aux ← x X ← y Y ← aux
Analyse de la procédure tri_bulles DEF PROC tri_bulles (var t :tab) Résultat=T trié
T trié= [ ] Repeter
Echange ← faux Pour i de 1 à n-1 faire Si t[i] > t[i+1] alors permuter(t[i+1],t[i]) echange ← vrai Finsi
Finpour
Jusqu’à Echange=faux Analyse de la procédure affiche DEF PROC Affiche( t :tab) Résultat = Affichage Pour i de 1 à n faire Ecrire(t[i], ¨ ¨) finpour Analyse du pp
Résultat = Proc Affiche(t)
Ttrié=Proc tri_bulles(t) T,n= Proc Saisie(t,n) 2.
Algorithmes :
Algorithme de la procedure Saisie
0)DEF PROC Saisie(var t :tab ; var n :entier) 1) Repeter
Ecrire(¨Donner la taille du tableau¨), lire (n)
Jusqu’a n dans [3..30]
2)Pour i de 1àn faire
Ecrire (¨t[¨,i, ¨ ]= ¨), Lire(T[i]) Fin pour
3)Fin Saisie
Algorithme de la procedure Permuter 0) DEF PROC permuter(var x,y :entier) 1) aux ← x
2) X ← y 3) Y ← aux 4) Fin Permuter
Algorithme de la procedure tri_bulles 0) DEF PROC tri_bulles (var t :tab) 1) Repeter
Echange ← faux Pour i de 1 à n-1 faire
Si t[i] > t[i+1] alors permuter(t[i+1],t[i]) Echange ← vrai Finsi
Finpour
Jusqu’à Echange ← faux 2) Fin tri_bulles
Algorithme de la procedure Affiche 0) DEF PROC Affiche( t :tab) 1) Pour i de 1 à n faire 2) Ecrire(t[i], ¨ ¨) Finpour
3) Fin Affiche Algorithme du pp
0) Début Tri_a_bulles 1) Proc saisie(t,n) 2) Proc Tri_bulles(t) 3) Proc affiche(t) 4) Fin Tri_a_bulles
2 Traduction Pascal :
program tri_a_bulles;
uses wincrt;
type
tab=array[1..30] of integer;
var t:tab;
n:integer;
procedure saisie(var t:tab;var n:integer);
var i:integer;
begin repeat
write('Donner la taille du tableau '); readln(n);
until n in [1..30];
for i:=1 to n do begin
write('t[',i,']= ');
readln(t[i]);
end;
end;
procedure tri_bulles(var t:tab);
var i:integer;
echange:boolean;
procedure permuter(var x,y:integer);
var
aux:integer;
begin
aux:=x;
x:=y;
y:=aux;
end;
begin repeat
echange:=false;
for i:= 1 to n-1 do if t[i]>t[i+1] then begin
echange:=true;
permuter(t[i+1],t[i]);
end;
until echange=false;
end;
procedure affiche ( t:tab);
var i:integer;
begin
for i:= 1 to n do write(t[i],' ');
end;
begin saisie(t,n);
tri_bulles(t);
affiche(t);
end.
4 ème
S-e Chapitre 4 : Les algorithmes de tri et de recherche xp
III.
Tri par insertion :
1.
Analyse :
Analyse de la procédure saisie
DEF PROC saisie (var t :tab ; var n :entier) Résultat=t,n
Pour i de 1àn faire T[i]= donnée (¨t[¨,i, ¨ ]= ¨) Fin pour
Repeter
N=donnée(¨Donner la taille du tableau¨) Jusqu’a n dans [3..30]
Analyse de la procédure Tri_insertion DEF PROC tri_insertion (var t :tab) Résultat = Ttrié
Ttrié= [ ]
Pour i de 2 à n faire k ← T[i]
j ← i-1
Tant que ( j >=1) et (T[ j ]>k) faire t[ j+1 ] ← t[ j ]
j ← j - 1 Fin Tant que t[ j+1 ] ← k
Finpour
Analyse de la procédure affiche DEF PROC Affiche( t :tab) Résultat = Affichage Pour i de 1 à n faire Ecrire(t[i], ¨ ¨) finpour Analyse du pp
Résultat = Proc Affiche(t)
Ttrié =Proc tri_Insertion(t) T,n = Proc Saisie(t,n)
2.
Algorithmes :
2) Pour i de 1àn faire Ecrire (¨t[¨,i, ¨ ]= ¨), Lire(T[i]) Fin pour
3) Fin Saisie
Algorithme de la procedure tri_insertion
0) DEF PROC tri_insertion (var t :tab) 1) Pour i de 2 à n faire
k ← T[i]
j ← i-1
Tant que ( j >=1) et (T[ j ]>k) faire t[ j+1 ] ← t[ j ]
j ← j - 1 Fin Tant que t[ j+1 ] ← k
Finpour 2) Fin tri_insertion
Algorithme de la procedure Affiche 0) DEF PROC Affiche( t :tab) 1) Pour i de 1 à n faire Ecrire(t[i], ¨ ¨) Finpour
2) Fin Affiche Algorithme du pp
0) Début Tri_insertion 1) Proc saisie(t,n) 2) Proc Tri_insertion(t) 3) Proc affiche(t) 4) Fin Tri_select
3.