An algorithm that puts a collection of data elements into some sequenced order, sometimes based on one or more key values in each element.