Das ganze soll in Perl geschrieben werden?
Ja. Aber es spielen designfragen eine Rolle. Reduziere die Vergleiche auf das Minimum.
Mein Denkansatz geht in
die Richtung, dass ich das Gesamt-Array in Teil-Arrays splitten würde und zwar jeweils in solche mit Strings gleicher Länge.
definiere "gleiche Länge"
offensichtlich gibt es keine definierte Länge für die subchunks.
Diese dann per einer 08/15 Standard-Sortierfunktion sortieren lassen und zum Schluss wieder zu einem einzigen Array zusammenfügen.
mal naiv. Länge der Subchunks = 1
sortiere 72b und 7a3
Nach meiner Vorstellung ist
7.a.3 < 72.b.
Nach deiner Vorstellung aber
7.a.3 > 72.b.
Ich streiche aus deinem Tipp 'gleiche Länge'. Heraus kommen Felder für die gelten muss:
undef < 0 < 1 < 2 < 11 < a < ab < b
simple sort reicht auf keinen Fall.
Aber die Sortiersub ist hier kein Problem. Die bekomme ich schon hin.
Die Frage ist bloss, ist es sinnvoll, unnötige (weil undef) Felder für alle Elemente des Arrays zu erzeugen?
Das will ich vermeiden. Darum denke ich an die Erzeugung eines hashes von hashes.
Die Elemente
'', 0,0,0, 1, '1ac', 'a', 'a1', 'a11'
sollten zuerst in diese Datenstruktur umgebaut werden:
%elem = (
undef => [1,],
0 => [3,], # 3 Elemente 0
1 => [1,
{ac=>[1,]},
],
a => [1,
{
1=>[1,],
11=>[1,],
},
],
);
Diesen hash kann ich dann rekursiv sortiert ausgeben, bzw einen sortieren Array zusammenbauen.
mfg Beat
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische