Thread Sortierung eines Arrays (5 answers)
Opened by bAbbAZwack at 2008-01-23 16:07

Strat
 2008-01-25 12:17
#105146 #105146
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du sehr viele Elemente hast, koennte es vielleicht schneller sein, das ueber eine Schwartzian Transform zu loesen... siehe meine HP unter Perl -> Sortierungen.

Code (perl): (dl )
1
2
3
4
5
my @sorted =
  map { $_->[1] }
  sort { $a->[0] cmp $b->[0] }
  map { [ lc($_->{name} ), $_ ] }
@unsorted;

von unten nach oben lesen:

map: Aus @unsorted wird ein zweidimensionales array gemacht:
element1 ist das Sortierkriterium, element2 ist der originalwert

sort: vergleiche die ersten Elemente des Arrays. da hier nichts mehr umgewandelt werden muss (z.B. lc), geht der Vergleich der jeweiligen vergleichskriterien schneller

map: der Originalstring wird zurueckgegeben.

Das kann - oder auch nicht - schneller sein.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Sortierung eines Arrays