; Sortieren durch direkte Auswahl

(defun sucheKleinstes (liste merke)
  (cond ((null liste) merke)
        ((< (car liste) merke) (sucheKleinstes (cdr liste)(car liste)))
        (t (sucheKleinstes (cdr liste) merke))))

(defun entferneKleinstes (liste kleinstes)
  (cond ((eql (car liste) kleinstes) (cdr liste))
        (t (cons (car liste) (entferneKleinstes (cdr liste) kleinstes)))))

(defun StraightSelection (liste &aux merke)
  (cond ((null liste) nil)
        (t (setq merke (sucheKleinstes (cdr liste) (car liste)))
           (cons merke
                 (StraightSelection (entferneKleinstes liste merke))))))
