Sure, but runtime depends on your luck.
#!/usr/bin/env perl use strict; use warnings; use List::Util qw( shuffle reduce ); my @list = qw( f a d e z x c b ); sub in_order { my $state = 1; our( $a, $b ); my $ordered = reduce { if( $state and $b lt $a ) { $state = undef; } + $b } @_; return $state; } my $shuffles = 0; my @ordered = @list; my %memory; until ( in_order( @ordered ) ) { $memory{ join("\0",@ordered) } = 1; while( 1 ) { @ordered = shuffle( @list ); $shuffles++; last unless $memory{ join("\0",@ordered) }; } } print "took $shuffles shuffles to get\n\t", join( "\n\t", @ordered ), +"\n"; exit 0; __END__
The cake is a lie.
The cake is a lie.
The cake is a lie.
In reply to Re: Sorting Arrays Without using SORT function
by Fletch
in thread Sorting Arrays Without using SORT function
by PerlCool
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |