Un Algoritmo que me gusta mucho es el quicksort, porque es un algoritmo por demás claro. Ya he escrito lo fácil que es implementarlo en haskell
Ahora le toca a lisp. Básicamente el algoritmo toma un pivot y agrupa los menores del pivot al principio y los mayores al final y aplica quicksort a estos 2 grupos. Y si la lista es vacia, ya esta ordenada.
Vamos al código:
(defun qso (l)
(cond
((null l) l)
(T (append
(qso (remove-if (lambda (a) (> a (first l))) (rest l)))
(cons
(first l)
(qso (remove-if (lambda (a) (<= a (first l))) (rest l)))
)
)
)
)
)