Sorting

Sorting is probably the most fundamental algorithm in Computer Science. A sorting algorithm takes a list as the input, and returns a list in an order. It is often the first step in many algorithms, and thus setting the lower bound for complexity.

Definition
Given a list S with N elements, $$S' = Sort( S )$$ is defined as follows:
 * for $$0 < i \leq N$$, $$S_i \leq S_{i+1}$$.
 * S' is a permutation of S.

Put in Lisp:

(defun is-sorted (lst) (cond ((< (length lst) 2) t)	(t (and (<= (first lst) (second lst)) (is-sorted (cdr lst))))))

Sorting Algorithms and Complexities

 * n is the number of elements
 * k is the number of distinct objects