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")