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...
Pascal - Tri par insertion - Récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ...
Représentation des courbes sous Matlab VoirLa fonction plot permet essentiellement de tracer des courbes sous Matlab. Dans cette astuce, nous allons essayer de détailler le fonctionnement de cette commande. Simple utilisation Vecteur Matrice Vecteur en fonction d'un autre Autres...
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...
Tableur - Les fonctions mathématiques VoirLes fonctions standards Méthode description ABS() Cette méthode renvoie la valeur absolue d'un nombre, il renvoie donc le nombre s'il est positif, son opposé (positif) s'il est négatif IMPAIR(valeur) Cette méthode renvoie la valeur...
VBScript - Les fonctions de manipulation de tableaux VoirLes fonctions de manipulation de tableaux Fonction Description Array(arglist) Crée un Variant contenant un tableau. L'argument arglist est la liste des valeurs, séparées par des...
Tableau de bord VoirNotion de tableau de bord Un tableau de bord est une représentation graphique synthétique d'un ensemble d'indicateurs donnant à un responsable tous les éléments lui permettant de prendre visuellement et rapidement des décisions. Compte-tenu de sa...
Collection CommentÇaMarche.net