Flux rss
Collection CommentCaMarche.net

Trier un tableau sans utiliser la fonction sort

Publié par lami20j, dernière mise à jour le mardi 15 avril 2008 à 00:32:20 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
--
[PHP] tri des colonnes d'un tableau (Résolu) Bonjour, voila, j'ai créé ma première page PHP avec base de donnée derriere. Cela m'affiche un tableau avec 10 colonnes. je voudrais, en cliquant sur le titre de chaque colonne, que cela trie la liste en fonction de cette colonne (ex. je... www.commentcamarche.net/forum/affich-3988941-php-tri-des-colonnes-d-un-tableau
Tri en VBA sous EXCEL (Résolu) Bonjour tout le monde, Je cherche à effectuer un TRI grâce à cette fonction VBA : Sub Tri_Ouvertes() Range("B6:T100).Select Selection.Sort Key1:=Range("G6"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False,... www.commentcamarche.net/forum/affich-1242956-tri-en-vba-sous-excel
Probleme s-video acer aspire 7720 (Résolu) Bonjour, J'ai comme vous devez vous en doutez un probleme! Je ne parviens pas a utiliser ma sortie s-video. J'ai reussi a l'utiliser une foi apres l'achat de mon pc. Mais depuis j'ai reinstaller entierement mon ordi. Je ne... www.commentcamarche.net/forum/affich-6909538-probleme-s-video-acer-aspire-7720
Manipulations élémentaires des tableaux sous MatLabSommaire 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... www.commentcamarche.net/faq/sujet-11091-manipulations-elementaires-des-tableaux-sous-matlab
[VBA] Enlever la croix rouge d'un UserForm.Il est parfois intéressant de supprimer la possibilité de sortir d'un userform tant que toutes les entrées n'ont pas été saisies, mais voilà, il reste toujours cette croix qui autorise l'utilisateur à sortir. Le code ci-dessous permet d'oter cette... www.commentcamarche.net/faq/sujet-12794-vba-enlever-la-croix-rouge-d-un-userform
Inverser les éléments d'un tableau -Récursivité-Voici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ... www.commentcamarche.net/faq/sujet-8811-inverser-les-elements-d-un-tableau-recursivite
[PERL] Trier éléments d'un tab SANS sort (Résolu)Bonjour a tous , Dans le cadre d'un exercice je dois trier les éléments (numériques) d'une liste, mais sans utiliser la fonction "sort". Par exemple pour le tableau suivant : @tablo=(9,3,7,14,8,7,25,12,1,6); je faisais simplement : @tablo2 =... www.commentcamarche.net/forum/affich-3886108-perl-trier-elements-d-un-tab-sans-sort
[VBA] Trier un tableau excel (Résolu)Bonjour, Je fais une fois de plus appel à vos talents. J'aimerai trier tout un tableau excel en fonction d'une colonne AC d'abord puis D (D + AC) , sachant que la première ligne du tableau correspond aux légendes du tableau. Merci de... www.commentcamarche.net/forum/affich-6613946-vba-trier-un-tableau-excel
TRIER open odt bug / insérer dans tableau (Résolu)Bonjour, Est-le la fonction ou moi qui cafouille, je ne sais pas. J'ai découvert il y a quelques temps la fonction TRI et l'utilise sans problème. Je suis en train de préparer un listing d'adresses mail pour faire des envois en nombre.... www.commentcamarche.net/forum/affich-9621278-trier-open-odt-bug-inserer-dans-tableau
Antec Sonata Designer 500 MidiTower / ATX / MicroATX / 500W / Silver500 W, Ports USB en façade:2, Ports Firewire en façade:1, Ventilateurs:120mm TriCool selectable-speed fan, Entrées/Sorties Audio, Type:Boîtier Moyen Tour, Puissance de l'alimentation:500 Watts, Nombre de baies 5, 25 pouces internes:0, Nombre de baies 5, 2 www.commentcamarche.net/guide-achat/antec-sonata-designer-500-miditower-atx-microatx-500w-silver-1030910-fiche-technique
Les structures en langage CDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de... www.commentcamarche.net/contents/c/cstruct.php3