Download | Plain Text | Line Numbers
#!/usr/bin/perl
use Data::Dumper;
use strict;
my @a = (0, 7, 3, 1,5 );
#my @a = (1, 12, 18, 45, 50, 60, 67, 101);
#@a = reverse(@a);
sub print_array
{
my ($a) = @_;
my $str = "[";
for(my $i = 0; $i < scalar(@$a); $i++)
{
$str .= ((defined($$a[$i])) ? $$a[$i] : "_");
$str .= ", ";
}
$str = substr($str, 0, length($str)-2);
$str .= "]";
return $str;
}
my $i = 1;
while($i <= scalar(@a) - 1)
{
print print_array(\@a), $/;
if ($i == 1 || $a[$i - 1] <= $a[$i])
{
$i++;
}
else
{
my $k = $a[$i];
$a[$i] = $a[$i - 1];
$a[$i - 1] = $k;
$i--;
}
}
print Dumper(@a);
print "keycnt=", scalar(@a), $/;