An algorithm which puts the elements of a list in a certain order, usually alphabetical or numerical. Commonly used examples include the bubble sort, bi-directional bubble sort, selection sort, shell sort, merge sort, insertion sort, heap sort, quick sort, and combinations of these. How efficient these are depends on the size of the list to be sorted, the algorithmic complexity of the procedure, and the available memory space in the computer doing the sort.