# Trier une liste avec Applescript



## ManUtopiK (4 Juillet 2008)

set ma_liste to {"2","3","1","5","4"}

Est-ce qu'il existe une commande permettant de trier ma_liste pour obtenir 1,2,3,4,5 ?

Si non, comment faire sur une liste de plus de 20 000 entrées sans que ça bouffe trop de mémoire et que ça prenne 2 heures ?


----------



## Didier Guillion (4 Juillet 2008)

http://www.macosxhints.com/article.php?story=20040513173003941

Cordialement


----------



## zacromatafalgar (4 Juillet 2008)

Salut,

Tu peux utiliser le code suivant :


```
set L to {20, 10, 5, -3, 100, 15, 6}


set n to count L

repeat with i from 1 to n - 1
	repeat with j from i + 1 to n
		if item i of L > item j of L then
			set temp to item i of L
			set item i of L to item j of L
			set item j of L to temp
		end if
	end repeat
end repeat
```
C'est bien la liste qui est triée, il n'y a pas création d'une nouvelle liste


----------



## tatouille (4 Juillet 2008)

zacromatafalgar a dit:


> Salut,
> 
> Tu peux utiliser le code suivant :
> 
> ...




oui tu consideres ta liste mutable, mais parfois c'est bien de garder l'originale
par exemple si tu veux faire un reverse ou faire d'autres type de "sort"


```
to IsEven(x)
    if x mod 2 = 0 then
        return true
    end if
    return false
end IsEven

to ForEach(fn, l)
    global ForEach_fn_
    repeat with x in l
        set ForEach_fn_ to fn
        display dialog x
        display dialog ForEach_fn_(x)
    end repeat
end ForEach

set myList to {20, 10, 5, -3, 100, 15, 6}

ForEach(my IsEven, myList)
```


----------

