| 
SYNOPSIS
        mixed * sort_array(mixed *arr, string wrong_order)
        mixed * sort_array(mixed *arr, string wrong_order, object|string ob)
        mixed * sort_array(mixed *arr, string wrong_order, object|string ob,
                             mixed extra...)
        mixed * sort_array(mixed *arr, closure cl)
        mixed * sort_array(mixed *arr, closure cl, mixed extra...)
BESCHREIBUNG
        Sortiert das Array <arr> entweder nach der Ordnungsfunktion
        <ob->wrong_order(a, b)> oder nach der Closure cl.
        Normalerweise wird zuerst eine flache Kopie des Arrays <arr> erstellt
        und die sortierte Kopie als Ergebnis zurueckgeliefert. Wird <arr>
        jedoch als Referenz uebergeben, wird keine implizite Kopie erstellt
        und das Originalarray sortiert.
        Wenn das Argument <arr> 0 ist, ist das Resultat der Funktion auch 0.
        <ob> ist das Objekt, in dem die Ordnungsfunktion <wrong_order()>
        aufgerufen wird. <ob> kann das Objekt als solches enthalten, oder
        einen String mit dem Objektnamen. Wird <ob> nicht angegeben, oder
        enthaelt es weder einen String noch ein Objekt, wird stattdessen
        this_object() verwendet.
        Die Elemente von <arr> werden paarweise an die Ordnungsfunktion
        <wrong_order()> als Argumente uebergeben, gefolgt von den <extra>
        Argumenten, falls vorhanden. Die Ordnungsfunktion <wrong_order> sollte
        eine positve Zahl liefern, wenn die paarweisen Elemente in der
        falschen Reihenfolge waren, 0 oder eine negative Zahl sonst.
BEISPIELE
        Um folgendes Array in aufsteigender Reihenfolge zu ordnen:
            arr = ({ 3, 8, 1, 3 })
        wird als Ordnungsfunktion ist_groesser() verwendet:
            int ist_groesser(int a, int b) {
                return a > b;
            }
        Folgende Aufrufe von sort_array() sind alle aequivalent:
            arr = sort_array(arr, "ist_groesser", this_object())
            arr = sort_array(arr, "ist_groesser")
            arr = sort_array(arr, #'ist_groesser)
            arr = sort_array(arr, #'>)  //dies ist die bevorzugte Variante :-)
            arr = sort_array(arr, lambda(({'a, 'b}), ({#'>, 'a, 'b})))
        Soll direkt das Original <arr> statt einer impliziten Kopie sortiert
        werden:
            sort_array(&arr, #'>)
        Etwas komplizierter ist es, folgendes Array aufsteigend nach dem
        zweiten Argument jedes Teilarrays zu ordnen:
            arr = ({ ({ "foo", 3 }), ({ "quux", 1 }), ... })
        Dafuer muss die Ordnungsfunktion folgende Form annehmen:
            int ist_groesser(mixed *a, mixed *b) {
                return a[1] > b[1];
            }
GESCHICHTE
        LDMud 3.2.8 fuehrte die Moeglichkeit ein, zusaetzliche Argumente
            <extra> zu uebergeben.
        LDMud 3.3.720 unterstuetzt die Uebergabe von <arr> als Referenz und
            sortiert das Original statt einer impliziten flachen Kopie.
SIEHE AUCH
        transpose_array(E), filter(E), map(E), alists(LPC)
 |