Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Numeric sorting WITHOUT <=>

by BillKSmith (Vicar)
on Oct 10, 2012 at 03:31 UTC ( #998121=note: print w/replies, xml ) Need Help??

in reply to Numeric sorting WITHOUT <=>

Here is one bad way to do it! No comparisons at all.

use strict; use warnings; my %jetsons = ( 7 => 'Judy', 10 => 'Jane', 11 => 'George', 2 => 'Elroy', 100=> 'Rosey', 1 => 'Astro', 19 => 'Mr. Spacely', 22 => 'Mr. Cogswell' ); for my $i (0..100) { print "$i => $jetsons{$i}\n" if exists $jetsons{$i}; }

Replies are listed 'Best First'.
Re^2: Numeric sorting WITHOUT <=>
by Anonymous Monk on Oct 10, 2012 at 03:48 UTC

    One may not know the minimum & maximum values without inspecting to use range operator, so ...

    use strict; use warnings; use List::MoreUtils 'minmax'; my %hash = ( ... ); # Absurdity is to find end values in order to avoid # numeric comparison. my ( $min , $max ) = minmax keys %hash; for my $i ( $min .. $max ) { ... }
Re^2: Numeric sorting WITHOUT <=>
by Marshall (Abbot) on Oct 10, 2012 at 04:05 UTC
    Yes, this is indeed a "bad way" to do it! Compared with sort(), this will be slow (20..99) yield no result and it doesn't scale well. And I guess that you would in the general case, have to read every key to find the maximum key value.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998121]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (4)
As of 2018-06-24 19:39 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.