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)
*