Bonjour
Pour mon étude personnelle, j'essaye de traduire cet algorithme de tri à bulle :
http://www.gladir.com/CODER/ALGO/tri.htm
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 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
Qui me donne ceci :
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"; }
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:
me donne l'erreur suivante :
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"; }
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.
Partager