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), $/;