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