From: "Amichai Teumim" <[EMAIL PROTECTED]> > I need to use two loops and an if statement to sort the contents of > this array so > that the number go from lowest to highest.
@sorted = sort {$a <=> $b} @unsorted; You can use the builtin function sort(). All you have to do is to tell it how do you want the elements compared. > So I tried to implement this: > > #!/usr/bin/perl > > @array = (5,3,2,1,4); > > for (i=0; i<n-1; i++) { > for (j=0; j<n-1-i; j++) > if ($array[j+1] < $array[j]) { /* compare the two neighbors */ > tmp = $array[j]; /* swap $array[j] and $array[j+1] */ > $array[j] = $array[j+1]; > $array[j+1] = tmp; > } > } The first thing you are missing are sigils. All variables in Perl have to start with a sigil ($, @, %, ...). for ($i=0; $i<$n-1; $i++) { for ($j=0; $j<$n-1-$i; $j++) if ($array[$j+1] < $array[$j]) { /* compare the two neighbors */ $tmp = $array[$j]; /* swap $array[j] and $array[j+1] */ $array[$j] = $array[$j+1]; $array[$j+1] = $tmp; } } Next thing is that you do not need a third variable to exchange the values of two variables. ($a, $b) = ($b, $a); is perfectly legal and more efficient. So you can write the body of the inner loop like this: ($array[j], $array[j+1]) = ($array[j+1], $array[j]); You may even use so called "array slices". That is instead of writing ($array[j+1], $array[j]) you can write just @array[j+1,j] so the body of the loop will be @array[j,j+1] = @array[j+1,j]; You may also use the foreach style of loop instead of the C-style for(): foreach my $i (0 .. $#array) { foreach my $j (0 .. $#array-1-$i) { if ($array[$j+1] < $array[$j]) { @array[j,j+1] = @array[j+1,j]; } } } > foreach $elem (@array){ > print "$elem\n"; > } This can be simplified to print join("\n", @array), "\n"; Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/