Thread hash sortieren (15 answers)
Opened by Gast at 2006-03-15 19:02

Linuxer
 2006-03-16 00:12
#63842 #63842
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Hi,

das geht mit der Schwartzschen Transformation:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl
use strict;
use warnings;

# $arr[0][$x] = 7
# $arr[1][$x] = 6
# $arr[2][$x] = 10
my @arr = (
[ 7, 'foo' ],
[ 6, 'bar' ],
[ 10, 'foobar' ],
);

my $x = 0;
# sortierte IDs der "ersten" Array-Ebene mittels Schwartzscher Transformation
my @sortid =
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, $arr[$_]->[$x] ] }
0 .. $#arr;

# Ausgabe der IDs
print "@sortid", $/; # prints: 1 0 2

# Neusortierung des Array
@arr = @arr[@sortid];


Doku: http://perldoc.perl.org/perlfaq....g%29%3F

EDIT:
Wobei es bei einem AoA dieser Tiefe auch einfacher geht:
Code: (dl )
1
2
3
# initialisierung wie oben
$x=0;
@arr = sort { $a->[$x] <=> $b->[$x] } @arr;
\n\n

<!--EDIT|Linuxer|1142461330-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread hash sortieren