Thread Komplexer sort (natürliche Sortierung)
(13 answers)
Opened by Student87 at 2012-11-23 17:10 2012-11-23T16:25:57 pq Danke, aber das bringt leider nicht den gewünschten Output vom Anfangspost, sondern: chrY chrY chrY chrX chrX chrX chrX chr1 chr1 chr1 chr2 chr2 chr2 chr10 chr10 chr10 chr10 X und Y stehen also am Anfang der Liste anstatt am Ende und es folgt X auf Y anstatt Y auf X. Hab ich den Code richtig verstanden?: Wenn $a = chrX ist, dann matcht das [a-z]+ doch chrX und das \d+ matcht nichts, richtig? Also: $chr_a = chrX und $num_a = undefined. Nehmen wir an, $b = chr1. Dann wird zuerst chrX mit chr verglichen. Die beiden sind unterschiedlich, also kommt es zu einem Sort und der numerische Sort ("$num_a <=> $num_b") findet nicht mehr statt. Bei dem STATTFINDENEN sort scheint er aber "chr" in der Liste hinter "chrX" zu positionieren. Und wenn man bei einem anderen Sort-Schritt von chrX und chrY ausgeht, positioniert er Y vor X, obwohl alphabetisch gesehen zuerst X kommen müsste. Wie kann man das korrigieren? EDIT: Ich glaub, ich hab schon das passende gefunden in der Doc ... "descending" und "ascending" ist das Stichwort :) Ich les das mal und editier hier dann nochmal EDIT2: Mir ist immer noch nicht klar, wieso pq's code chrY VOR chrX setzt. Es müsste doch alphabetich sortiert sein, da sie $a mit $b vergleicht und nicht $b mit $a (Letzteres würde ja glaub ich die alphabetische Reihenfolge umkehren). Last edited: 2012-11-29 12:46:08 +0100 (CET) |