|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Array im Array, nach einem Wert sortieren
|
Seitenanfang |
| Hallo, Ich habe ein Problem, ich habe folgendes Programm-Fragment, das mehrere Arrays mit vier verschiedenen Werten einliest (siehe unten). Mein Problem ist nun: Kann ich irgendwie die Arrays @array_row nach dem Wert $array_row[3](also $E) ordnen (numerisch absteigend oder aufsteigend) ?? Dabei müssen die vier Werte aber unbedingt zusammenbleiben. Es sind ziemlich viele Werte, daher ist das ganze etwas kompliziert und zeitaufwändig. Mit einem Hash gehts auch nicht, weil sich die Werte nicht unbedingt immer unterscheiden (Schlüssen wäre also nicht eindeutig). Über Lösungsvorschläge wäre ich sehr sehr dankbar! my @array = (); my @array_row; push (@array, "$x $y $z $E"); for my $j(0..$#array) { @array_row = split(' ', $array[$j]); #print "$array_row[3]\n"; # gibt $E aus #print @array; #alle $x, $y, $z und $E ausgeben }
Datum: 01.08.2007-21:56

|
re: Array im Array, nach einem Wert sortieren
|
Seitenanfang |
| Hallo! Du kannst der sort-Funktion einen eigenen Vergleichsalgorithmus übergeben, siehe http://perldoc.perl.org/functions/sort.html Zudem solltest du dir auch noch die schwartzsche Transformation anschauen, für Optimierungszwecke: http://perl-seiten.homepage.t-online.de/html/perl_schw.html (Auf der Seite ist auch noch mal die sort-Funktion in deutsch erklärt :) Grüße, Skrilax
Datum: 01.08.2007-22:13

|
re: Array im Array, nach einem Wert sortieren
|
Seitenanfang |
Vielen Dank schonmal für die schnelle Antwort :) Ich werd mich mal durch die Seiten wühlen und hoffen dass es klappt ;)viele Grüße
Datum: 01.08.2007-22:29

|
re: Array im Array, nach einem Wert sortieren
|
Seitenanfang |
| Hallo, Ich komme damit irgendwie nicht zurecht, vielleicht habe ich mich vorhin falsch ausgedrückt, Die Ausgangssituation sieht so aus: [code] @array1 = (2, $a, $b, $c) @array2 = (3, $x, $y, $z) @array3 = (1, $u, $v, $w) @array = (@array1, @array2, @array3) [\code] Und ich möchte nach dem jeweils ersten Element der inneren arrays sortieren: [code] @sorted_array = (@array3, @array1, @array3) [\code] Geht das überhaupt? Danke!!
Datum: 02.08.2007-14:49

|
re: Array im Array, nach einem Wert sortieren
|
Seitenanfang |
| Hallo! Was ist @array denn nun genau? ein Mehrdimensionales? Nach deiner jetztigen Notation ist es ein eindimensionales Array:
@array = (2, $a, $b, $c, 3, $x, ...); Oder meintest du:
@array = (\@array1, \@array2, \@array3) in letzterem Fall lässt es sich doch einfach per
my @sorted = sort { $a->[0] <=> $b->[0] } @array; sortieren.Ist es hingegen eine durchlaufende Liste, solltest du diese erst jenes mehrdimensionale Array umwandeln, wie. o.g. sortieren und zurückverwandeln. Da wären wir dann wieder bei der schwartzschen Transformation. :D >>Geht das überhaupt? Aber hallo, dass ist perl, da geht grundsätzlich _alles_ ;-) Grüße, Skrilax
Datum: 02.08.2007-15:33

|
re: Array im Array, nach einem Wert sortieren
|
Seitenanfang |
| Oh, mit Referenzen und sort klappts, wie schön :) Ja, in Perl geht grundsätzlich alles, die Maschine ist halt immer so clever wie der der davor sitzt ... Nächstes Jahr kann mein Perl dann hoffentlich auch grundsätzlich alles ;) Vielen Dank!!
Datum: 02.08.2007-21:16

|
|

|

|

|
 |

|

|
|