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...
Excel - Effacer le contenu de certaines cellules. VoirProblème Voici mon problème : J'ai 6 cellules comportant des listes déroulantes. Les 6 sont sélectionnées à chaque fois. J'aimerais pouvoir avoir un bouton pour réinitialiser les 6 en même temps c'est à dire qu'elles apparaissent vides (bien sûr...
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...
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 ...
Les modes de fonctionnement du Wifi (802.11 ou Wi-Fi) VoirIl existe différents types d'équipement pour la mise en place d'un réseau sans fil Wifi : Les adaptateurs sans fils ou cartes d'accès (en anglais wireless adapters ou network interface controller, noté NIC) : il s'agit d'une carte réseau à 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...
Collection CommentÇaMarche.net