sort a comme argument une liste de nombres ou une matrice
ou une liste de chaines de caractères ou une expression.
lorsque le 1ier argument est une liste, sort accepte comme 2-ième
argument une fonction de tri f qui doit définir un ordre strict faible ( par
exemple (x,y)->x>y pour avoir la liste triée selon l’ordre décroissant).
^
2+2*x*y+xExemples pour trier des listes de listes
Avec un seul argument, sort trie les listes de listes par ordre croissant.
On obtient :
Pour un ordre différent, il faut mettre
une fonction de tri comme 2ième argument.
Par exemple :
Exemple pour trier par ordre lexicographique des matrices ou des chaines de caractères
Pour trier par ordre lexicographique des matrices ou des chaines de
caractères, il faut mettre en second argument comme fonction de tri, par
exemple, la fonction booléenne super ci-dessous :
Si L1 et L2 sont 2 listes ou 2 chaines de caractères alors
super(L1,L2) renvoie 1 si L1>L2 et 0 sinon.
On tape :
super(L1,L2):={ local s,j; s:=min(size(L1),size(L2))-1; j:=0; tantque L1[j]==L2[j] and j<s faire j:=j+1; ftantque; //si L2[j]>=L1[j] alors return 0 sinon return 1; fsi; si [sort(L1[j],L2[j])]==[L1[j],L2[j]] alors return 0 sinon return 1; fsi; }:;
On a remplacé L2[j]>=L1[j] par [sort(L1[j],L2[j])]==[L1[j],L2[j]]
pour que super soit aussi valable pour les chaines de caractères.
On tape :
ou on tape
On obtient :
On tape :
ou on tape
On obtient :
Remarque Si on veut trier la liste L:=[1,3,4,3,2] et mettre le résultat dans L, on a 2 façon de le faire. On tape :
Ou on tape :
On obtient comme nouvelle valeur de L :
Ou encore
Si on veut trier la liste L:=[[1,3],[2,4],[2,3],[1,4]] avec
(x,y)->when(x[0]==y[0],x[1]>y[1],x[0]>y[0]) et mettre le résultat dans
L, on a 2 façon de le faire.
On définit L, on tape :
Ou on tape :
On obtient comme nouvelle valeur de L :