Download | Plain Text | No Line Numbers


  1. #!/usr/bin/perl
  2.  
  3. use Data::Dumper;
  4. use strict;
  5.  
  6. my @a = (0, 7, 3, 1,5 );
  7. #my @a = (1, 12, 18, 45, 50, 60, 67, 101);
  8. #@a = reverse(@a);
  9.  
  10. sub print_array
  11. {
  12. my ($a) = @_;
  13. my $str = "[";
  14. for(my $i = 0; $i < scalar(@$a); $i++)
  15. {
  16. $str .= ((defined($$a[$i])) ? $$a[$i] : "_");
  17. $str .= ", ";
  18. }
  19. $str = substr($str, 0, length($str)-2);
  20. $str .= "]";
  21. return $str;
  22. }
  23.  
  24. my $i = 1;
  25. while($i <= scalar(@a) - 1)
  26. {
  27. print print_array(\@a), $/;
  28. if ($i == 1 || $a[$i - 1] <= $a[$i])
  29. {
  30. $i++;
  31. }
  32. else
  33. {
  34. my $k = $a[$i];
  35. $a[$i] = $a[$i - 1];
  36. $a[$i - 1] = $k;
  37. $i--;
  38. }
  39. }
  40.  
  41. print Dumper(@a);
  42.  
  43. print "keycnt=", scalar(@a), $/;
  44.  
  45.