-
An “ordering” is basically a set of rules that determine what items come before, or after, what other items. IE: the relative order items would appear in if they were sorted. For collections that enforce an ordering, that ordering is generally specified in terms of comparison operators (particularly
<), interfaces (a la Java’sComparable<T>), or comparison callbacks and/or function objects (like C++’sstd::less).There are also collections described as “ordered collections“. Slightly different use of the word, but related meaning. What that means is that the collection represents a sequence of items, and thus has some inbuilt concept of order. (Contrast with, say, hash tables. You add something to a hash table, you have no idea where it’ll appear if ever you iterate over the contents. With an ordered collection, you know.) Lists, vectors, arrays, etc are the quintessential ordered collections. For a non-list example, though, PHP’s “array” type is actually an “ordered map” — a dictionary type where the order of keys is retained. Keys appear in the order in which they were first inserted (or the order in which you last put them with a
ksort()or the like) when you iterate over the array. -
“Sorting” is the process of actually arranging a sequence of items in accordance with a given ordering. It’s typically only done with ordered collections…as it doesn’t make much sense to put one item before another in a container that has no concept of “before” or won’t let you rearrange items in the first place. (Structures like sets and heaps can use an ordering too, and adding and removing entries alters the underlying tree based on the ordering. One could argue they’re “sorting” bit by bit. But the word is typically used to represent an operation that does the rearranging all at once.)