in reply to Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1
I have not seen others but here are two attempts. Anyway i bet on tybalt89's regex ;)
Discipulus => sub{ my @list = @input; my @neg = sort {$a<=>$b} grep { $_ < 0 } @list; my @pos = sort {$a<=>$b} grep { $_ >= 0} @list; @list = (@pos,@neg); Compare(\@list,\@output) or die "@list" if DO_CHECK; }, Discipulus2 => sub{ my @list = sort {$a<=>$b} @input; push @list, shift @list until $list[0] >= 0; Compare(\@list,\@output) or die "@list" if DO_CHECK; },
UPDATE what I first imagined was a sort block.. now after the right dose of spaghetti..
Discipulus3 => sub{ my @list = sort { (( $a >= 0 and $b >= 0) or ($a < 0 and $b < 0 )) ? $a<=>$b : $b<=>$a } @input; Compare(\@list,\@output) or die "@list" if DO_CHECK; }, #OUTPUT Rate Discipulus Discipulus3 Discipulus2 Discipulus 46252/s -- -14% -46% Discipulus3 53805/s 16% -- -38% Discipulus2 86380/s 87% 61% --
L*
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1
by hdb (Monsignor) on Feb 05, 2019 at 17:03 UTC | |
by Discipulus (Canon) on Feb 05, 2019 at 20:48 UTC | |
by Tux (Canon) on Feb 06, 2019 at 10:58 UTC | |
by hdb (Monsignor) on Feb 06, 2019 at 11:13 UTC | |
|
Re^2: Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1
by Eily (Monsignor) on Feb 06, 2019 at 09:54 UTC |