XP is just a number PerlMonks

### 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 ( #1229420=note: print w/replies, xml ) Need Help??

I think your second version will be very slow if there are only negative numbers... ;) My version below is reasonably fast if there is no zero in the input, otherwise it fails:

```hdb => sub {
my @list = @input;
@list = sort{\$a*\$b>0?\$a<=>\$b:\$b<=>\$a} @list;
Compare(\@list,\@output) or die "@list" if DO_CHECK;
},
• Comment on Re^2: Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1

Replies are listed 'Best First'.
Re^3: Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1
by Discipulus (Abbot) on Feb 05, 2019 at 20:48 UTC
Hello hdb

> version will be very slow if there are only negative numbers... ;)

eh eh, you are right but the check does not slow it at all..

```Discipulus => sub{
my @list = sort {\$a<=>\$b} @input;
if (\$list[0] < 0 and \$list[-1] > 0){
push @list, shift @list until \$list[0] >= 0;
}
Compare(\@list,\@output) or die "@list" if DO_CHECK;
},

update: more test cases.. more checks!

```Discipulus4 => q{ # https://www.perlmonks.org/?node_id=1229437
@list = sort {\$a<=>\$b} @list;
if (\$list[0] < 0 and \$list[-1] >= 0)
{ push @list, shift @list until \$list[0] >= 0 }        },
L*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
Re^3: Fastest way to sort a list of integers into 0,1,2,3,-3,-2,-1
by Tux (Canon) on Feb 06, 2019 at 10:58 UTC

You might not have run this with DO_CHECK *on*, as your lists sort like 1 2 3 4 5 0 -5 -4 -3 -2 -1: Your 0 ends up in the middle instead of at the start.

Enjoy, Have FUN! H.Merijn

I did, that's why I said it fails if there is a zero in the data. I am still thinking whether it can be saved in some way without extra checks for zero.

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1229420]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2022-05-24 18:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Do you prefer to work remotely?

Results (84 votes). Check out past polls.

Notices?