Re: preserve sort order in another list
- From: Jim Gibson <jgibson@xxxxxxxxxxxxxxxxx>
- Date: Thu, 05 May 2005 12:41:24 -0700
In article <XZqdnUK9wc7TyOffRVn-2w@xxxxxxxxxxxx>, Brett
<bg1343d@xxxxxxxxxxx> wrote:
> "Jürgen Exner" <jurgenex@xxxxxxxxxxx> wrote in message
> news:8Tmee.2706$Vu.1954@xxxxxxxxxxx
> > Brett wrote:
> > > I have two arrays and i wish to sort the first one numerically, but
> > > after sorting, I would like the second array to be in the same
> > > matching order as the first array.
> > >
> > > ie.
> > >
> > > @l1={3,1,2};
> > > @l2={'a','b','c'};
> > >
> > > @l1 = sort {$a <=> $b} (@l1); # sort list @l1 to be {1,2,3}
> > >
> > > # do something to @l2 to make order {'b','c','a'} (preserving the
> > > original mapping with the first list)
> > >
> > > There's probably an easy way to do this that i'm not aware of.
> >
> > Indeed, there is: use a data structure that matches your problem better.
> > Instead of having a pair of unrelated arrays use a single array of pairs.
> > And then sort that single array by the value of the first component of
> each
> > pair.
> >
> > jue
>
>
> I'm new to this, and tried to give it a go.
>
> struct ID =>
> {
> number => '$',
> name => '$',
> };
>
> my @IDs = ID->new();
> #fill data...
>
> @IDs = sort {$a->number <=> $b->number} (@IDs); # numeric sort on number
>
> but that failed to sort the list as i expected. How can i use sort to do
> what I want?
Please post a complete program so we can see where you are going wrong,
but post it to comp.lang.perl.misc because this newsgroup is defunct.
Here is a version that uses an array of array references to an array of
two elements, as Jürgen suggested:
#!/usr/local/bin/perl
use strict;
use warnings;
my @l1 = qw/ 3 1 2 /;
my @l2 = qw/ a b c /;
my @ids = map { [ $l1[$_], $l2[$_] ] } (0..$#l1);
print "Unsorted Array:\n";
for my $r ( @ids ) {
print " @$r\n";
}
print "\nSorted array:\n";
foreach my $r ( sort { $a->[0] <=> $b->[0] } @ids ) {
print " @$r\n";
}
__OUTPUT__
Unsorted Array:
3 a
1 b
2 c
Sorted array:
1 b
2 c
3 a
----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= East/West-Coast Server Farms - Total Privacy via Encryption =---
.
- Follow-Ups:
- Re: preserve sort order in another list
- From: Brett
- Re: preserve sort order in another list
- References:
- preserve sort order in another list
- From: Brett
- Re: preserve sort order in another list
- From: Jürgen Exner
- Re: preserve sort order in another list
- From: Brett
- preserve sort order in another list
- Prev by Date: Re: preserve sort order in another list
- Next by Date: Re: preserve sort order in another list
- Previous by thread: Re: preserve sort order in another list
- Next by thread: Re: preserve sort order in another list
- Index(es):
Relevant Pages
|
|