suivant: Trier une liste selon
monter: La liste ou les
précédent: Rajouter un élément au
Table des matières
Index
Trier : sort
sort a comme argument une liste ou une expression.
Remarque
sort accepte un
2-ième argument après une liste qui est la fonction de tri, par
exemple (x,y)->x>y pour avoir la liste triée selon l'ordre décroissant.
Attention
La fonction de tri f doit définir un ordre strict faible c'est à dire
que
- f (x, y) est un fonction renvoyant 0 (faux) ou 1 (vrai) qui est
toujours définie (f doit renvoyer 0 si 2 éléments ne sont
pas comparables) et doit vérifier :
- f doit définir une
relation transitive (si f (x, y) et f (y, z) sont vrais alors
f (x, z) est vrai)
- on ne peut pas avoir
f (x, y) et f (y, x) vrai en même temps (antisymétrie
non réflexive)
- f ne définit pas forcément une relation
d'ordre total, on peut avoir f (x, y) et f (y, x) simultanément
faux.
Si on définit la relation E par xEy est vrai lorsque
f (x, y) et f (y, x) sont simultanément faux
alors E doit être une relation d'équivalence.
Sinon l'algorithme employé risque de boucler....
Par exemple, on ne peut pas mettre comme
fonction de tri : (x,y)->x[1]>=y[1].
On tape :
sort([3,4,2],(x,y)->x>y)
On obtient :
[4,3,2]
sort ne trie pas des listes de listes, il faut donc lui passer
une fonction de tri, par exemple par ordre décroissant de la 2ième
colonne ou de la première en cas d'égalité. On tape :
sort([[1,2],[2,3],[4,3]],(x,y)->when(x[1]==y[1],x[0]>y[0],x[1]>y[1]))
On obtient :
[[4,3],[2,3],[1,2]]
Attention
Dans l'exemple précédent,
- on ne peut pas mettre comme
fonction de tri
(x,y)->x[1]>=y[1] car l'ordre n'est pas strict
- on peut mettre comme fonction de tri
f:=(x,y)->x[1]>y[1] bien que l'ordre ne soit pas total.
Soient :
L1:=[[1,2],[2,3],[4,3]]
L2:=[[1,2],[4,3],[2,3]]
Dans ce cas sort(L1,(x,y)->x[1]>y[1]) et
sort(L2,(x,y)->x[1]>y[1]) renvoient des réponses
différentes parce que l'ordre n'est pas total et que
[2,3] et [4,3] sont considérés comme équivalents.
suivant: Trier une liste selon
monter: La liste ou les
précédent: Rajouter un élément au
Table des matières
Index
Documentation de giac écrite par Renée De Graeve