Trier un tableau sans utiliser la fonction sort

Trier un tableau sans utiliser la fonction sort
D'abord on initialise une variable $max avec la 1ère valeur de tableau.
Ensuite on va faire une boucle tant que le tableau contient encore des éléments.
C'est avec la fonction splice qui a le rôle de vider le tableau.
Voici l'algorithme :
TANT QUE le tableau contient des éléments trouve la valeur maximale cherche la position de l'élément trouvé ajouter l'élément au début du tableau trié, l'ordre croissante ajouter l'élément à la fin du tableau trié - l'ordre décroissante suppression d'élément trouvé avec splice - condition d'arrêt de la boucle réinitialiser la position réinitialiser la valeur $max avec le 1er élément du tableau diminué avec splice FIN TANT QUE
Le script
#!/usr/bin/perl use strict;use warnings; my @tab = qw/9 3 7 14 8 7 25 12 1 6/; my ($n,$max,@tri,@tri_desc); $max = $tab[0]; print "@tab\n"; while(@tab){ $_ > $max and $max = $_ for @tab; for (@tab){ $n++;last if $max == $_} unshift @tri,$max; push @tri_desc,$max; splice(@tab,$n-1,1); $n=0; $max = $tab[0]; } print "ordre croissante:\t@tri\n"; print "ordre decroissante:\t@tri_desc\n"; __END__
Le résultat
lami20j@debian:~# perl ccm.pl 9 3 7 14 8 7 25 12 1 6 ordre croissante: 1 3 6 7 7 8 9 12 14 25 ordre decroissante: 25 14 12 9 8 7 7 6 3 1--
Ce document intitulé « Trier un tableau sans utiliser la fonction sort » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.