Sorting algorithms/Insertion sort: Difference between revisions
Content added Content deleted
(Haskell Example) |
(Added CL version) |
||
Line 12: | Line 12: | ||
Writing the algorithm for integers will suffice. |
Writing the algorithm for integers will suffice. |
||
=={{header|Common Lisp}}== |
|||
(defun span (predicate list) |
|||
(let ((tail (member-if-not predicate list))) |
|||
(values (ldiff list tail) tail))) |
|||
(defun less-than (x) |
|||
(lambda (y) (< y x))) |
|||
(defun insert (list elt) |
|||
(multiple-value-bind (left right) (span (less-than elt) list) |
|||
(append left (list elt) right))) |
|||
(defun insertion-sort (list) |
|||
(reduce #'insert list :initial-value nil)) |
|||
=={{header|Haskell}}== |
=={{header|Haskell}}== |