tris 1° méthode (tri par permuttation)

retour

 

1° méthode : Le principe est de permuter deux éléments successifs en les comparant : si le premier est plus grand il remplace le suivant. On doit réaliser une certain nombre de passages pour trier l'ensemble.

Exemple simple :

soit la liste suivante 0 5 4 2 3
1° passage
2° passage
3° passage
4° passage
0 5 4 2 3 Départ
0 5 4 2 3 comparer 1° et 2°
0 5 4 2 3 comparer 2° et 3°
0 4 5 2 3 échanger
0 4 5 2 3 comparer 3° et 4°
0 4 2 5 3 échanger
0 4 2 5 3 comparer 4° et 5°
0 4 2 3 5 échanger

résultat : 0 4 2 3 5

0 4 2 3 5 comparer 1° et 2°
0 4 2 3 5 comparer 2° et 3°
0 2 4 3 5 échanger
0 2 4 3 5 comparer 3° et 4°
0 2 3 4 5 échanger

résultat : 0 2 3 4 5

0 2 3 4 5 comparer 1° et 2°
0 2 3 4 5 comparer 2° et 3

(pas d'échanges)

résultat : 0 2 3 4 5

0 2 3 4 5 comparer 1° et 2°

résultat :

0 2 3 4 5 liste triée

On remarquera :

  • que le nombre total de passages nécessaires est de 4 pour 5 éléments dans la liste
  • que dans le premier passage on a réalisé 4 comparaisons, dans le deuxième 3, le troisième 2 .Il est en effet inutile d'aller au bout de la liste puisque le dernier est trié !

Algorithmes :

échanger deux éléments

comparer l'élément i avec le i+1. Si le 2° est plus petit que le 1°, déplacer le 1° à la place du 2°. L'opération est répétée jusqu'à la fin du tableau : le plus grand élément est alors placé au bout du tableau. On recommence alors pour placer l'avant dernier puis...

On ne peut pas écrire :
si tab[i]>tab[i+1] alors {tab[i]= tab[i+1] ; tab[i+1]= tab[i] }
car la première affectation détruit tab[i]

On doit donc conserver la valeur de tab[i] dans une variable intermédiaire :

de i=1 jusqu'à n-1
si tab[i]>tab[i+1] alors {x= tab[i+1] ; tab[i+1]= tab[i] ; tab[i] =x}

répétition du tri

Une fois le premier passage réalisé on répète. Si l'on nomme nbelements le nombre total d'éléments de la liste alors, sachant que le nombre de passage (voir ex.) est de nbéléments-1, et l'étendue de la répétition par passage est de nbéléments - nombre de passages effectués :

de j=1 jusqu'à nbéléments-1
de i=1 jusqu'à nbéléments -j
si tab[i]>tab[i+1] alors {x= tab[i+1] ; tab[i+1]= tab[i] ; tab[i] =x}


AVANT LE TRI

APRÈS LE TRI

TESTER SUR UN GRAND NOMBRE D'ÉLÉMENTS par cette méthode

Tri par PARTIE TRIÉE PARTIE À TRIER