Vorlage Dokumentation#sort
Allgemeines
   Aufruf
   Einleitung
   Installation
   Konfiguration
   Syntax
Einführung
   MetabefehlsAusdruecke
   MetabefehlsSyntax
   RegulaereAusdruecke
   VordefinierteVariablen
Funktionen
   abs()
   after()
   and()
   antoi()
   before()
   ceil()
   change()
   close()
   crop()
   equals()
   exp()
   flatten()
   float()
   floor()
   int()
   isnothing()
   itoan()
   length()
   log()
   log10()
   match()
   not()
   open()
   or()
   random()
   read()
   readline()
   sign()
   status()
   statustext()
   substr()
   system()
   time()
   tolower()
   toupper()
   typeof()
   write()
   writeline()
   xname()
   xor()
Metabefehle
   #after
   #array
   #break
   #call
   #config
   #const
   #debug
   #default
   #dict
   #else
   #every
   #forever
   #func
   #if
   #ifregion
   #ifunit
   #include
   #input
   #message
   #next
   #notrace
   #proc
   #return
   #sort
   #table
   #tag
   #trace
   #var
   #while
Rückruf-Prozeduren
   CalcUnitCapacities
   CreateRegionHeader
   CreateUnitHeader
   EndRegion
   EndUnit
   OnBuilding
   OnExit
   OnInit
   OnRegion
   OnShip
   OnUnit
   OutputLineFilter
Report-Objekte
   building
   grenze
   partei
   preise
   races
   region
   report
   ship
   things
   unit
Anhang
   Danksagungen
   SkriptDebugger
   VorlageFAQ

#sort

Sortierung von Arrays

Syntax

#sort <array> [<lessfunc> [<arg1> [...]]]

Beschreibung

Dieser Befehl ermöglicht es Arrays zu sortieren. Wird der Name einer Vergleichsfunktion lessfunc angegeben, so wird diese verwendet, andernfalls der Kleiner-Operator.

Die aufgerufene Funktion, falls angegeben, sollte die Signatur wie z.B.

#func LessThan $arrayname $i1 $i2

haben und bekommt in $arrayname den Namen des Arrays (für Inplace-Zugriff) und in $i1 und $i2 jeweils die Indizes der beiden Einträge. Die Funktion sollte einen Wert ungleich 0 liefern, falls für die beiden Indizes '$($arrayname)[$i1]<$($arrayname)[$i2]' gilt, sonst 0.

Die eventuell weiter angegebenen Werte werden an die Funktion durchgereicht, sie muss dann aber auch exakt so viele Parameter erwarten, wie dem Befehl mitgegeben werden, sonst erfolgt eine Fehlermeldung.

Zu beachten ist, dass bei Verwendung einer eigenen LessThan Funktion sich das zu sortierende Array im globalen Kontext befinden muss, da die LessThan Funktion sonst nicht darauf zugreifen kann.

Der #sort-Befehl verwendet intern den Quicksort-Algorithmus und ist dank interner Kopiertricks vor allem bei Behältern im Array immer einer Eigenimplementierung vorzuziehen.

Parameter

array Hier wird das zu sortierende Array übergeben
lessfunc Optionale "Kleiner-als-Funktion" die für die Vergleiche beim Sortieren verwendet wird
arg1 Erster der optionalen Parameter die (z.B. zur Sortiermodus-Wahl) an die "Kleiner-als-Funktion" übergeben werden

Beispiel

Sorry, noch kein Beispiel.

Referenzen

-

Revision 27 May 2006

Page design, graphics and contents (c) copyright 1999-2004
by S.Schümann and contributing authors