Bonjour

Pour mon étude personnelle, j'essaye de traduire cet algorithme de tri à bulle :
http://www.gladir.com/CODER/ALGO/tri.htm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
BOUCLE POUR I <- Nombre d'élément - 2 JUSQU'A 0 PAS -1 FAIRE
            BOUCLE POUR J <- 0 JUSQU'A I PAS 1 FAIRE
                 SI Tableau [ J + 1 ] < Tableau [ J ] ALORS
                           Échanger Tableau [ J + 1 ] avec Tableau [ J ]
                 FIN SI
             FIN BOUCLE POUR
 
FIN BOUCLE POUR
J'ai donc fais le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use warnings;
use strict;
 
my @tab = qw(101 115 30 63 47 20); 
my $i=$#tab-1 ;
my $j=0;
 
for ( $i , $i=0 , $i--) 
    { for ($j , $j<=$i, $j++) {
            if ( $tab[$j+1] < $tab[$j]) { 
                    $tab[$j+1] = $tab[$j]
                    }
                } 
        print "@tab\n";
        }
Qui me donne ceci :
101 115 115 63 47 20
101 115 115 115 47 20
101 115 115 115 115 20
Ce n'est évidement pas ce j’attends j'aimerais bien visualiser comment le tri se met en place étapes par étapes

J'ai aussi une autre question le script équivalent à celui ci dessus mais écrits comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use warnings;
use strict;
 
my @tab = qw(101 115 30 63 47 20); 
for ( my $i=$#tab-1 , $i=0 , $i--) 
    { for (my $j=0 , $j<=$i, $j++) {
            if ( $tab[$j+1] < $tab[$j]) { 
                    $tab[$j+1] = $tab[$j]
                    }
                } 
        print "@tab\n";
        }
me donne l'erreur suivante :
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./bublesort.pl line 8.
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at ./bublesort.pl line 8.
Global symbol "$j" requires explicit package name (did you forget to declare "my $j"?) at ./bublesort.pl line 9.
Global symbol "$j" requires explicit package name (did you forget to declare "my $j"?) at ./bublesort.pl line 9.

Alors qu'avec le script suivant : http://www.gladir.com/CODER/PERL/tribubble.htm l'expression "for (my $j=0, " fonctionne. Qu'elle sont les différences?

D'avance merci.