Trier une liste avec Applescript

ManUtopiK

Membre confirmé
15 Juin 2008
60
1
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 ?
 
Salut,

Tu peux utiliser le code suivant :

Bloc de code:
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…
;)
 
Salut,

Tu peux utiliser le code suivant :

Bloc de code:
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…
;)


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"

Bloc de code:
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)