1 2 3 4 5 6 a b c
####
x y
1 2 3 4 5 6 a b c
##
##
x y
a b c 4 5 6 1 2 3
##
##
$y = $offset_y if $y == @$ary;
x y
a b c 4 5 6 1 2 3
##
##
sub do_swaps {
my ( $ary, $offset_x, $offset_y, $swaps ) = @_;
my ( $x, $y ) = ( $offset_x, $offset_y );
while ( $offset_y != @$ary ) {
for ( $offset_x .. ( $offset_y - 1 ) ) {
$y = $offset_y if $y == @$ary;
my $temp = $ary->[$x];
$ary->[$x] = $ary->[$y];
$ary->[$y] = $temp;
$x += 1;
$y += 1;
$swaps += 1;
}
( $offset_x, $offset_y ) = ( $x, $y );
}
return $swaps;
}