Implémentation pour des listes

L'implémentation donnée ci-dessus est facile à adpater à une liste au lieu d'un vecteur, car l'itération principale se fait du premier au dernier élément.

bullesliste.lisp

On remarque les deux clauses de la boucle interne, l'une pour déterminer le nombre d'itérations et l'autre pour parcourir la liste.

* (defparameter *l* '(4 1 3 1  8 3 44 5 7 3 9 0 0 3 2 44 5 33))

*L*
* (bubblesort2 *l*)

NIL
* *l*

(0 0 1 1 2 3 3 3 3 4 5 5 7 8 9 33 44 44)
* (bubblesort2 *l* :test #'(lambda (x y) (and (oddp x) (evenp y))))

NIL
* *l*

(1 1 3 3 3 3 5 5 7 9 33 0 0 2 4 8 44 44)
* (bubblesort2 *l* :test #'>)

NIL
* *l*

(44 44 33 9 8 7 5 5 4 3 3 3 3 2 1 1 0 0)
* (bubblesort2 *l* :test #'(lambda (x y) (and (oddp x) (evenp y))))

NIL
* *l*

(33 9 7 5 5 3 3 3 3 1 1 44 44 8 4 2 0 0)
*

Irene DURAND
2011-10-14