Sorting algorithms/Gnome sort: Difference between revisions

Content added Content deleted
Line 216: Line 216:
sub gnome_sort
sub gnome_sort
{
{
my $aref = shift;
my @a = @_;


my $size = scalar(@$aref);
my $size = scalar(@a);
my $i = 1;
my $i = 1;
my $j = 2;
my $j = 2;
while($i < $size) {
while($i < $size) {
if ( ${$aref}[$i-1] <= ${$aref}[$i] ) {
if ( $a[$i-1] <= $a[$i] ) {
$i = $j;
$i = $j;
$j++;
$j++;
} else {
} else {
my $t = ${$aref}[$i-1];
@a[$i, $i-1] = @a[$i-1, $i];
${$aref}[$i-1] = ${$aref}[$i];
${$aref}[$i] = $t;
$i--;
$i--;
if ($i == 0) {
if ($i == 0) {
Line 236: Line 234:
}
}
}
}
return $aref;
return @a;
}</lang>
}</lang>


<lang perl>my @arr = ( 10, 9, 8, 5, 2, 1, 1, 0, 50, -2 );
<lang perl>my @arr = ( 10, 9, 8, 5, 2, 1, 1, 0, 50, -2 );
print join("\n", @{gnome_sort( \@arr )});
print "$_\n" foreach gnome_sort( @arr );</lang>
exit 0</lang>


=={{header|Python}}==
=={{header|Python}}==