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

Article Précédent Article Suivant

Les Meilleurs Conseils