Skip to end of metadata
Go to start of metadata

<RetVar> = Der Name des sortierten Arrays. Dies kann der gleiche wie der des zu sortierenden Arrays sein. Das Array muss nicht vorher erstellt werden. Dieser Befehl erstellt ein Array, falls es noch nicht existiert 
<Value> = Das Array, dessen Werte du sortieren möchtest. 


Sortiert den Inhalt eines Arrays alphabetisch, wenn es eine alphanumerische Liste ist, oder aufsteigend, wenn es eine numerische Liste ist. Numerisch geht vor alphanumerisch. 

Dabei sollte beachtet werden, dass beim Sortieren numerischer Werte eine lexikographische Ordnung genutzt wird. Ein Wikipedia Artikel zur Erklärung findet sich hier. Dies bedeutet, dass ganze Zahlen sozusagen als Zeichenketten behandelt werden und dementsprechend nicht der "normalen" Zahlenordnung folgen. Unter "Bekannte Sortierfehler" weiter unten findet sich ein Beispiel für dieses Verhalten. 

Beispiel

$station.array = $sector get station array from sector 
$sorted.array = sort array $station.array  


Das Array $sorted.array wird nun in absteigender, alphanumerischer Reihenfolge geordnet. 

 

Bekannte Sortierfehler: 

$Numbers = array alloc: size=6 
$Numbers[0] = 4 
$Numbers[1] = 2 
$Numbers[2] = 24 
$Numbers[3] = 6 
$Numbers[4] = 12 
$Numbers[5] = 1 
  
$Numbers = sort array $Numbers

 

Ausgabe: ARRAY(1, 12, 2, 24, 4, 6) 

Allgemein gesprochen wird hier ganz einfach das Sortierverhalten von Zeichenketten angewendet. Somit steht "12" vor 2, da "1" vor "2" kommt. 

Um dieses Problem zu umgehen, kann der folgende Befehl genutzt werden:  <RetVar> = sort array: data= <Value> sort values= <Value>  
Angewendet auf das hiesige Beispiel:

$Numbers = sort array: data= $Numbers sort values= $Numbers


 

  • No labels