Funktionreferenz


_ArraySort

Beschreibung anzeigen in

Sortiert ein 1D oder 2D Array durch einen festgelegten Index. Dabei werden Dualpivotsort-, Quicksort- und Insertionsort-Algorithmen verwendet

#include <Array.au3>
_ArraySort ( ByRef $aArray [, $iDescending = 0 [, $iStart = 0 [, $iEnd = 0 [, $iSubItem = 0 [, $iPivot = 0]]]]] )

Parameter

$aArray Array, das sortiert werden soll.
$iDescending [optional] Falls auf 1 gesetzt wird absteigend sortiert.
$iStart [optional] Start-Index für die Sortierung (Standard 0 = erstes Element oder Zeile)
$iEnd [optional] Stopp-Index für die Sortierung (Standard 0 = letztes Element oder Zeile)
$iSubItem [optional] Sub-Index der in einem 2D Array sortiert werden soll (Standard 0 = erste Spalte)
$iPivot [optional] verwendet den Pivot-sort-Algorithmus (Standard = quicksort)

Rückgabewert

Erfolg: 1
Fehler: 0 und setzt das @error Flag auf ungleich null
@error: 1 - $aArray ist kein Array
2 - $iStart ist größer als $iEnd
3 - $iSubItem ist größer als die Anzahl der Subitems
4 - $aArray ist kein 1D oder 2D Array
5 - $aArray ist leer
6 - $iPivot wird mit einem 2D-Araay verwendet

Bemerkungen

Standardmäßig verwendet diese UDF einen QuickSort-Algorithmus um das Array zu sortieren.
Wird bei 1D-Arrays durch den $iPivot-Parameter der DualPivotSort-Algorithmus verwendet, so kann dies für große Arrays (größer als 50 Elemente) bedeutend scheller sein.
Wird jedoch mit diesem Algorithmus ein 2D-Array sortiert, so ist es sehr viel langsamer und die UDF wird in diesem Fall einen Fehler zurückgeben.

Bei beiden Algorithmen werden relativ kurze Arrays mit einer Einfügesortierung sortiert (kleiner als 15 Elemente mit QuickSort; kleiner 45 Elemente mit Dual PivotSort).
Es ist jedoch zu beachten, dass es keine Garantie gibt, dass ein bestimmter Algorithmus in dem vorliegenden Fall schneller sein wird.

Elemente vom Datentyp Zeichenkette werden alphabetisch sortiert und Elemente vom Datentyp Zahl werden numerisch sortiert - es ist wichtig, vor dem Sortieren sicherzustellen, dass die Elemente den richtigen Datentyp haben.

Beispiel

Beispiel 1

#include <Array.au3>

;verwendet ein 1D Array

Local $avArray[10] = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

_ArrayDisplay($avArray, "VOR _ArraySort()")
_ArraySort($avArray)
_ArrayDisplay($avArray, "NACHDEM aufsteigend sortiert hat")
_ArraySort($avArray, 1)
_ArrayDisplay($avArray, "NACHDEM absteigend sortiert hat")
_ArraySort($avArray, 0, 3, 6)
_ArrayDisplay($avArray, "NACHDEM von Index 3 bis 6 sortiert hat")
_ArraySort($avArray, 0, 0, 0, 0, 1)
_ArrayDisplay($avArray, "NACHDEM DualPivotSort aufsteigend sortiert hat")


Beispiel 2

#include <Array.au3>

;verwendet ein 2D Array

Local $avArray[5][3] = [ _
        [5, 20, 8], _
        [4, 32, 7], _
        [3, 16, 9], _
        [2, 35, 0], _
        [1, 19, 6]]

_ArrayDisplay($avArray, "$avArray VOR _ArraySort()")
_ArraySort($avArray, 0, 0, 0, 0)
_ArrayDisplay($avArray, "$avArray NACHDEM _ArraySort() Spalte 0 aufsteigend sortiert hat")
_ArraySort($avArray, 0, 0, 0, 1)
_ArrayDisplay($avArray, "$avArray NACHDEM _ArraySort() Spalte 1 aufsteigend sortiert hat")
_ArraySort($avArray, 0, 0, 0, 2)
_ArrayDisplay($avArray, "$avArray NACHDEM _ArraySort() Spalte 2 aufsteigend sortiert hat")