(defun quicksort-aux (vector min max less) (unless (<= max min) (rotatef (aref vector (floor (+ min max) 2)) (aref vector min)) (let ((p (partition vector (aref vector min) (1+ min) max less))) (rotatef (aref vector min) (aref vector (1- p))) (quicksort-aux vector min (- p 2) less) (quicksort-aux vector p max less)))) (defun quicksort (vector less) (quicksort-aux vector 0 (1- (length vector)) less) vector)