@ccueil Colles

Tri de tableaux, à 1 ou 2 dimensions

Liste des indices des valeurs triées


méthode sort, tri par défaut

En javascript, la méthode sort permet de trier / ordonner les éléments d'un tableau. De nombreuses ressources expliquent son fonctionnement complet, par exemple sur w3school ou sur developer.mozilla.
Par exemple,
tab=[1,5,12,-3,2];
tab.sort();
alert(tab);
// affiche: -3,1,12,2,5
tab=["avion","voiture","Bateau","velo"];
tab.sort();
alert(tab)
// affiche: Bateau,avion,velo,voiture
Par défaut, les éléments du tableau sont convertis en chaîne de caractères et l'ordre est celui du code Unicode. Cette règle explique que "Bateau" se retrouve en premier, avant "avion" et les autres, et de même, plus surprenant à première vue (et dangereux si on n'est pas au courant et n'y prend gare) que "12" se retrouve avant "2" (car, on prenant caractère après caractère "1", du "12", est avant "2" et "5").

Tri avec fonction de comparaison

La méthode sort accepte en paramètre optionnel une fonction qui permet de définir la manière de faire le tri des éléments. Cette fonction est une relation d'ordre, c'est-à-dire entre autre une relation binaire qui permettant de comparer deux éléments. Cette fonction à deux arguments, a et b par exemple, doit retourner un nombre négatif si a doit être placé avant b, retourner un nombre positif si b doit êplacé avant b, tandis qu'avec un résultat nul les positions de a et b restent inchangées.
Avec les exemples précédents, pour ordonner des nombres de manière croissante ou des chaînes de caractères par ordre alphabétique, sans se préoccuper des majuscules/minuscules:
tab=[1,5,12,-3,2];
tab.sort(function (a,b) {return a-b;});
alert(tab);
// affiche: -3,1,2,5,12
tab=["avion","voiture","Bateau","velo"];
//
tab.sort(function (a,b) {
           if (a.toLowerCase()<b.toLowerCase()) {return -1;} 
           else if (a.toLowerCase()>b.toLowerCase()) {return 1;} 
           else {return 1;}});
alert(tab)
// affiche: avion,Bateau,velo,voiture

Ordonner plusieurs tableaux simultanément

Pour trier plusieurs tableaux suivant l'ordre d'un d'entre eux, on peut tout simplement regrouper tous les tableaux dans un seul bidimensionnel et trier par rapport à une dimension. Ce dernier tri s'effectue à nouveau avec une fonction de comparaison adaptée:

AAAA