Tri d'une table sans utiliser la fonction de tri
Commencer
Tout d'abord, nous initialisons une variable $ max avec la 1ère valeur de table.
Ensuite, nous ferons une boucle jusqu'à ce que la table contienne encore des éléments.
En utilisant la fonction splice, nous allons vider la table.
Pseudocode
Si la table contient des éléments trouver la valeur maximale déterminer la position de l'élément trouvé ajouter l'élément en haut de la table triée, par ordre croissant ajouter l'élément à la fin de la table triée - dans l'ordre décroissant, supprimer les éléments trouvés avec splice - stopping condition pour la boucle réinitialiser la position réinitialiser le maximum $ avec le premier élément du tableau diminué avec splice END AS
Le codage
#! / usr / bin / perl utilise strict; utilise des avertissements; mon @tab = qw / 9 3 7 14 14 8 7 25 12 1 6 /; my ($ n, $ max, @ tri, @ tri_desc); $ max = $ tab [0]; print "@tab \ n"; while (@tab) {$ _> $ max et $ max = $ _ pour @tab; pour (@tab) {$ n ++; dernier si $ max == $ _} unshift @ tri, $ max; push @ tri_desc, $ max; splice (@ tab, $ n-1, 1); $ n = 0; $ max = $ tab [0]; } print "ordre croissant: \ \ n"; print "ordre décroissant: \ _desc \ n"; __FIN__
Résultats
Lorsque vous utilisez la combinaison suivante: 9 3 7 14 8 7 25 12 1 6
Ordre croissant: 1 3 6 7 7 8 9 12 12 14 25
Ordre descendant: 25 14 12 9 8 7 7