Bonjour, c'est de la logique ^^.
On va essayer d'expliquer.
L'idée principale est de permuter les valeurs en plaçant toujours la plus petite du sous-tableau (i
en position i. Ceci permet de trier le tableau.
Donc on commence par I=1.
Le bloc
do 20 j=i+1,10 if (T(j).LT.T(i)) then parcours un par un les éléments suivants du tableau pour trouver s'il existe un plus petit élément que l'élément en cours T(i). Pour une position J, deux cas de figures se présentent:
- T(j)>=T(i): donc on ne fait rien car T(j) est plus grand ou égal
- T(j)<T(i): donc on va permuter les deux valeurs. On commence par stocker T(i) dans la variable temporaire box (box=T(i)). Puis on stocke T(j) dans T(i) (T(i)=T(j)) et pour finir T(j)=box. Ce qui nous permet de permuter les deux valeurs.
Donc à la fin de la première étape, on a parcouru tout le sous-tableau T(2
et on est sûr d'avoir en position 1 la plus petite valeur (ne pas oublier qu'en cas de permutation le sous-tableau est modifié).
Puis on va chercher la deuxième plus petite valeur. Elle ne peut être en i=1, donc on peut commencer à i=2. On va donc se ramener à chercher la plus petite valeur dans le sous-tableau T(3
que l'on va positionner en i=2.
Et ainsi de suite, on réitère la procédure.
A l'étape i=9, on compare T(9) et T(10) que l'on permute si nécessaire.
Donc pour résumer, à chaque étape i (1<=i<=9), on est sûr d'avoir la ième plus petite valeur en position i. Pour i=10, il ne reste plus qu'une valeur, donc elle est triée ^^.
Pour finir voici une explication des commandes
- box = T(i) ! Mise en mémoire temporaire
- T(i)=T(j) ! On écrase T(i) par T(j), la valeur T(i) ayant été sauvegardé plus haut
- T(j)=box ! On écrase T(j) par box
En fait, elles ne servent qu'à permuter deux valeurs dans un tableau
Pour finir, on illustre par un exemple:
T(
=10,80,30,40,50,60,70,20,90
pour i=2, on doit permuter T(2) avec T(8) car T(2)>T(8)
box=80=T(2)
T(2)=20=T(8)
A ce stade, on a T(
=10,20,30,40,50,60,70,20,90
Et donc il manque un paramètre que l'on remplace
T(8)=80=box
Et l'on obtient
T(
=10,20,30,40,50,60,70,80,90
Et le tour est joué ^^.
PS: Merci pour l'option pour désactiver les smileys
.
Partager