Lycée Pilote de Sousse 2011/2012
Page 1 sur 4
Tri par sélection
Le tri par sélection est un algorithme de tri par comparaison. Il est particulièrement simple,
mais inefficace sur de grandes entrées.
Sur un tableau de n éléments (numérotés de 1 à n), le principe du tri par sélection est le
suivant :
Commencer par i=1 et on cherche la position de l'élément le plus petit du tableau
(pmin).
Une fois cet emplacement trouvé, on compare son contenu avec T[1] et s'il sont
différents(i pmin]), on permute l'élément de l'emplacement trouvé par l'élément
de la première position T[1] sinon T[1] reste à sa place
Après ce parcours le premier élément est bien placé.
On recommence le même procédé pour le reste du tableau (T[2]..T[n]), ainsi on
recherche le plus petit élément de cette nouvelle partie du tableau et on l'échange
éventuellement avec T[2].
Ainsi de suite jusqu'à la dernière partie du tableau formée par les deux derniers
éléments (T[n-1]..T[n]]).
Analyse programme TriSel :
Résultat = proc affichage(t,n)
T=proc tri (t,n)
T,N=proc saisie (t,n)
Fin TriSel
T.D.N.T
Type
Tab = tableau de 50 entiers
T.D.O
Objet
Type
Rôle
N
Entier
Taille tableau
T
Tab
Tableau d’entiers
Affichage
Procédure
Affichage tableau trié
Tri
Procédure
Tri du tableau
saisie
Procédure
Saisie contrôlée de n
Algorithme
0) debut triSel
1) Proc sasie (t,n)
2) Proc tri (t,n)
3) Proc affichage (t,n)
4) Fin triSel
Lycée Pilote de Sousse 2011/2012
Page 2 sur 4
Analyse de la procédure Tri :
Def Proc Tri (var t :tab ; n :entier)
Résultat = t
T=[] pour i de 1 à n-1 faire
[Pmin i]
Pour j de i+1 a n faire
Si t[j]<t[pmin] alors
Pmin j
finSi
finPour
si i<>pmin alors
Proc permuter (t[i],t[pmin])
Fin si
finPour
Fin Tri
Algorithme Tri
0) Def Proc Tri (var t :tab ; n :entier)
1) Pour i de 1 à n-1 faire
Pmin i
Pour j de i+1 a n faire
Si t[j]<t[pmin] alors
Pmin j
FinSi
FinPour
si i<>pmin alors
Proc permuter (t[i],t[pmin])
Fin si
FinPour
2) Fin Tri
Analyse de la procédure Permuter
Def proc permuter (var a :entier ; var b :entier)
Résultat = (a,b)
b p
a b
p a
Fin Permuter
Algorithme
0) Def Proc permuter ( var a : entier ; var b : entier)
1) p a
2) a b
3) b p
4) Fin permuter
T.D.O Locaux
Objet
Type
Rôle
I,j
Entier
Compteur
Permuter
procédure
Permuter deux cases
Pmin
Entier
Position min
Objet
Type
Rôle
p
Entier
Variable temporaire
Lycée Pilote de Sousse 2011/2012
Page 3 sur 4
Analyse de la procédure Affichage
Def proc Affichage (t:tab; n: entier)
Résultat = Affichage
Affichage = [] Pour c de 1 à n faire
Ecrire (t[c], ‘’ | ‘’)
finPour
Fin affichage
Algorithme Affichage
0) Def proc Affichage (t:tab; n: entier)
1) Pour c de 1 à n faire
Ecrire (t[c], ‘’ | ‘’)
finPour
2) Fin Affichage
Analyse de la procédure Saisie :
Def Proc saisie (var t:tab; var n:entier)
sultat = t,n
T=[] pour i de 1 à n faire
T[i]= donnée (''Donner l''élément t['',i,'']='')
FinPour
N=[]Répéter
N=donnée (''Donner n la taille du tableau:'')
Jusqu'à n dans [2..50]
Fin Saisie
Algorithme Saisie:
0) Def Proc saisie (var t:tab; var n:entier)
1) Répéter
Ecrire(''Donner n la taille du tableau:'')
Lire (n)
Jusqu'à n dans [2..50]
2) pour i de 1 à n faire
Ecrire(''Donner l''élément t['',i,'']='')
Lire (t[i])
FinPour
3) Fin Saisie
Traduction Pascal : {Tri par sélection ordre croissant}
program trisel;
uses wincrt;
Type
tab=array[1..50]of integer;
var
t:tab;
n:integer;
T.D.O Locaux
Objet
Type
Rôle
c
Entier
Compteur
T.D.O Locaux
Objet
Type
Rôle
i
Entier
Compteur
Lycée Pilote de Sousse 2011/2012
Page 4 sur 4
procedure saisie(var T:tab;var n:integer);
var
i:integer;
begin
repeat
Write('Donner n la taille du tableau : ');
readln(n);
until n in [2..50];
for i:=1 to n do
begin
Write('Donner l''élément T[',i,']=') ;
Readln(T[i]);
end;
end;
Procedure permuter( var a:integer; var b:integer);
Var
p : integer;
begin
p:=a;
a:=b;
b:=p;
end;
Procedure tri(var T:tab; n:integer);
var
i,j,pmin:integer;
begin
for i:=1 to n-1 do
begin
pmin:=i;
for j:=i+1 to n do
if t[j]<T[pmin] then pmin:=j;
if i<>pmin then
permuter(T[i],T[pmin]);
end;
end;
procedure affichage(T:tab; n:integer);
var
i:integer;
begin
writeln('Le tableau trié est : ');
for i:=1 to n do
write(T[i]:5);
end;
begin
saisie(T,n);
tri(T,n);
affichage(T,n);
end.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !