UDF > Array >


_ArraySort

Trie un tableau 1D ou 2D sur un index spécifique en utilisant les algorithmes DualPivotSort/QuickSort/InsertionSort

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

Paramètres

$aArray Tableau à trier
$iDescending [optionnel] Si défini à 1, tri dans l'ordre décroissant
$iStart [optionnel] Index du tableau où commencer le tri (par défaut 0 = premier élément ou première ligne)
$iEnd [optionnel] Index du tableau où arrêter le tri (par défaut 0 = dernier élément ou dernière ligne)
$iSubItem [optionnel] Sous-index pour trier dans des tableaux 2D (par défaut 0 = première colonne)
$iPivot [optionnel] Utilise l'algorithme du pivot - par défaut, QuickSort

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0.
@error: 1 - $aArray n'est pas un tableau
2 - $iStart est supérieure à $iEnd
3 - $iSubItem est plus grand que le nombre de sous-items
4 - $aArray n'est pas un tableau 1D ou 2D
5 - $aArray est vide
6 - $iPivot utilisé avec un tableau 2D

Remarque

Par défaut, la fonction utilise l'algorithme QuickSort pour trier le tableau. Définissez le paramètre $iPivot pour utiliser l'algorithme du DualPivotSort sur un tableau 1D - cela peut être beaucoup plus rapide pour des grands tableaux (> 50 éléments) - mais le tri des tableaux 2D avec cet algorithme est très lent et la fonction retournera une erreur dans ce cas.
Dans les deux algorithmes, des tableaux relativement courts seront triés à l'aide d'un tri par insertion (< 15 éléments avec QuickSort; < 45 éléments avec Dual PivotSort).
Notez qu'il n'y a aucune garantie qu'un algorithme spécifique soit plus rapide dans un cas donné.

Exemples

Exemple 1

; Tri d'un tableau 1D

#include <Array.au3>

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

_ArrayDisplay($avArray, "AVANT _ArraySort()")
_ArraySort($avArray)
_ArrayDisplay($avArray, "APRES QuickSort ascendant")
_ArraySort($avArray, 1)
_ArrayDisplay($avArray, "APRES QuickSort descendant")
_ArraySort($avArray, 0, 3, 6)
_ArrayDisplay($avArray, "APRES QuickSort des index 3 à 6")
_ArraySort($avArray, 0, 0, 0, 0, 1)
_ArrayDisplay($avArray, "APRES DualPivotSort ascendant")

Exemple 2

; Tri d'un tableau 2D

#include <Array.au3>

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

_ArrayDisplay($avArray, "$avArray AVANT _ArraySort()")
_ArraySort($avArray, 0, 0, 0, 0)
_ArrayDisplay($avArray, "$avArray APRES _ArraySort() ascendant col 0")
_ArraySort($avArray, 0, 0, 0, 1)
_ArrayDisplay($avArray, "$avArray APRES _ArraySort() ascendant col 1")
_ArraySort($avArray, 0, 0, 0, 2)
_ArrayDisplay($avArray, "$avArray APRES _ArraySort() ascendant col 2")