Trier un tableau sans utiliser la fonction sort

Dernière mise à jour le 16 novembre 2009 à 12:56 par marlalapocket
Publié par lami20j

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
--
Meilleures réponses pour « Trier un tableau sans utiliser la fonction sort » dans :
Trier un tableau sans utiliser la fonction sort Voir 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...
Manipulations élémentaires des tableaux sous MatLab VoirSommaire I. Stockage des tableaux II. L'indexation linéaire II.1. Accéder à un élément d'un tableau en utilisant l'indexation linéaire II.2. Passer d'une indexation à l'autre II.2.1. La fonction ind2sub II.2.2. La fonction sub2ind III. La...
Les imprimantes multifonctions VoirUtiliser une multifonction dans l'entreprise Une imprimante multifonctions est une machine de bureau combinant les fonctions d'imprimante, de scanner, de fax, de photocopieuse et de lecteur de cartes mémoires. Elle permet également pour la plupart...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...
Langage C - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Classe abstraite et fonction virtuelle pure VoirClasse abstraite et fonction virtuelle pure Dans l’exemple de code 7.3(fonctions virtuelles), la classe Noeud a ceci de particulier qu’elle représente uniquement un concept. Elle a été définie pour isoler les caractéristiques générales des...
Collection CommentÇaMarche.net