Vous êtes sur la page 1sur 9

LE TRI PAR SELECTION

1
Il existe plusieurs stratégies possibles pour trier les éléments d’un tableau:
Admettons que le but de la manœuvre soit de trier un tableau de 12 éléments dans
l’ordre croissant. La technique du tri par sélection est la suivante : on met en
bonne position l’élément numéro 1, c’est-à-dire le plus petit. Puis en met en bonne
position l’élément suivant. Et ainsi de suite jusqu’au dernier

LSI-A1 D.JEBALI
TRI D’UN TABLEAU : LE TRI PAR SELECTION
2
Par exemple, si l’on part de :

55 132 22 13 31 88 74 63 99 38 94 56

On commence par rechercher, parmi les 12 valeurs, quel est le plus petit élément ,
et où il se trouve, c’est le nombre 13, et on l’échange alors avec le premier élément
(le nombre 55). Le tableau devient ainsi :
13 132 22 13 55 88 74 63 99 38 94 56

On recommence à chercher le plus petit élément, mais cette fois, seulement à


partir du deuxième

13 22 132 13 55 88 74 63 99 38 94 56

LSI-A1 D.JEBALI
Algorithme: LE TRI PAR SELECTION
3
nous pourrions décrire le processus de la manière suivante :
 Boucle principale : prenons comme point de départ le premier élément, puis le
second, etc, jusqu’à l’avant dernier.
 Boucle secondaire : à partir de ce point de départ mouvant, recherchons
jusqu’à la fin du tableau quel et le plus petit élément. Une fois que nous l’avons
trouvé, nous l’échangeons avec le point de départ.
boucle principale : le point de départ se décale à chaque tour
Pour i ← 0 à 10 on considère provisoirement que t(i) est le plus petit
posmini ← i élément
Pour j ← i + 1 à 11
Si t(j) < t(posmini) Alors on examine tous les éléments suivants
posmini ← j
Finsi
j suivant A cet endroit, on sait maintenant où est le plus petit élément.
Il ne reste plus qu'à effectuer la permutation.
temp ← t(posmini)
t(posmini) ← t(i)
t(i) ← temp
On a placé correctement l'élément numéro i, on passe à présent au
i suivant
suivant.
LSI-A1 D.JEBALI
Programme: LE TRI PAR SELECTION
4

for (i=0; i<N1; i++)


{
on considère provisoirement que t(i) est le plus petit
posmin=i; élément
for( j=i+1;j<N1;j++)
{
if(t[j]< t[posmin]) on examine tous les éléments suivants

posmin=j;
}
A cet endroit, on sait maintenant où est le plus petit élément.
temp =t[posmin]; Il ne reste plus qu'à effectuer la permutation.
t[posmin]=t[i];
T1[i] = temp; On a placé correctement l'élément numéro i, on passe à présent au
suivant.
}

LSI-A1 D.JEBALI
TRI À BULLE
5

Le tri à bulle consiste à parcourir le tableau, par exemple de gauche à droite,


en comparant les éléments côte à côte et en les permutant s'ils ne sont pas dans
le bon ordre. Au cours d'une passe du tableau, les plus grands éléments
remontent de proche en proche vers la droite comme des bulles vers la surface.
On s'arrête dès que l'on détecte que le tableau est trié : si aucune permutation
n'a été faite au cours d'une passe.

LSI-A1 D.JEBALI
ALGORITHME: TRI À BULLE
6

Variable permute en Booléen


Début

permut ← Vrai
TantQue apermut
permut ← Faux
Pour i ← 0 à 10
Si t(i) > t(i+1) alors
temp ← t(i)
t(i) ← t(i+1)
t(i+1) ← temp
permut ← Vrai
Finsi
i suivant
Finpour
FinTantQue
Fin

LSI-A1 D.JEBALI
PROGRAMME :TRI À BULLE
7

while(permut)
{
permut=0;
for(i=0; i<N-1; i++)
{
if(T[i]>T[i+1])
{
temp =T[i];
T[i]=T[i+1];
T[i+1]= temp;
permut=1;
}
}
}

LSI-A1 D.JEBALI
Programme tri par sélection
8
#include <stdio.h> /* Affichage tableau */
main() for (i=0; i<N1; i++)
{ {
/* Déclarations */ printf("T1[%d]:%d \t",i,T1[i]);
}
int T1[50],N1, posmin,temp,j,permut=1;
//tri par selection
int i;
for (i=0; i<N1; i++)
do
{
{printf("Entrez la taille du tableau");
posmin=i;
scanf("%d",&N1);
for( j=i+1;j<N1;j++)
}while(N1>50);
{
/*saisie tableau*/
if(T1[j]< T1[posmin])
for (i=0; i<N1; i++)
posmin=j;
{
}
printf("T1[%d]: ",i);
temp =T1[posmin];
scanf("%d",&T1[i]);
T1[posmin]=T1[i];
}
T1[i] = temp;
printf("\n tableau \n");
}

LSI-A1 D.JEBALI
Programme trie à bulle
9

//trie à bulle
while(permut)
#include <stdio.h> { permut=0;
/*saisie tableau*/ for(i=0; i<N1-1; i++)
main()
for (i=0; i<N1; i++)
{ {
{
/* Déclarations */ printf("T1[%d]: ",i); if(T1[i]>T1[i+1]){temp
scanf("%d",&T1[i]); =T1[i]; T1[i]=T1[i+1];
int T1[50],N1,
} T1[i+1]= temp; permut=1;}
posmin,temp,j,permut=1;
printf("\n tableau \n"); }
int i;
/* Affichage tableau */ }
do
for (i=0; i<N1; i++) printf("\n tableau trie\n");
{printf("Entrez la taille du {
tableau"); for (i=0; i<N1; i++)
printf("T1[%d]:%d \t",i,T1[i]);
scanf("%d",&N1); } {
}while(N1>50); printf("T1[%d]:%d \t",i,T1[i]);
}
return 0;
}

LSI-A1 D.JEBALI

Vous aimerez peut-être aussi