Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,10 @@
|
|||
(defun bubble-sort (sequence &optional (compare #'<))
|
||||
"sort a sequence (array or list) with an optional comparison function (cl:< is the default)"
|
||||
(loop with sorted = nil until sorted do
|
||||
(setf sorted t)
|
||||
(loop for a below (1- (length sequence)) do
|
||||
(unless (funcall compare (elt sequence a)
|
||||
(elt sequence (1+ a)))
|
||||
(rotatef (elt sequence a)
|
||||
(elt sequence (1+ a)))
|
||||
(setf sorted nil)))))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(bubble-sort (list 5 4 3 2 1))
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
(defun bubble-sort-vector (vector predicate &aux (len (1- (length vector))))
|
||||
(do ((swapped t)) ((not swapped) vector)
|
||||
(setf swapped nil)
|
||||
(do ((i (min 0 len) (1+ i))) ((eql i len))
|
||||
(when (funcall predicate (aref vector (1+ i)) (aref vector i))
|
||||
(rotatef (aref vector i) (aref vector (1+ i)))
|
||||
(setf swapped t)))))
|
||||
|
||||
(defun bubble-sort-list (list predicate)
|
||||
(do ((swapped t)) ((not swapped) list)
|
||||
(setf swapped nil)
|
||||
(do ((list list (rest list))) ((endp (rest list)))
|
||||
(when (funcall predicate (second list) (first list))
|
||||
(rotatef (first list) (second list))
|
||||
(setf swapped t)))))
|
||||
|
||||
(defun bubble-sort (sequence predicate)
|
||||
(etypecase sequence
|
||||
(list (bubble-sort-list sequence predicate))
|
||||
(vector (bubble-sort-vector sequence predicate))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue