How to use Mathematica and the Wolfram Langage - for beginner, intermediate, and advanced users.
Showing posts with label sorting. Show all posts
Showing posts with label sorting. Show all posts
Sunday, February 12, 2012
Sort, SortBy, Ordering, OrderedQ
This small family of functions is essential to programming in Mathematica. Indeed, sorting has been central to computer programming and algorithm analysis since programming's inception in the late 1950s.
See posts for:
Sort, SortBy, Ordering, OrderedQ
OrderingQ
OrderingQ
OrderingQ is the predicate of the family, which by default returns True of False if a List (or List of arguments of any function) is in "canonical" order, defined as lowest numerical or symbolic value to highest.
In[269]:= numericalList = Range@12 // RandomSample[#, 12] &
Out[269]= {11, 2, 5, 9, 1, 3, 8, 7, 4, 12, 10, 6}
In[270]:= OrderedQ@numericalList
Out[270]= False
Sort by default sorts from low to high.
In[271]:= Sort@numericalList
Out[271]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
In[272]:= OrderedQ@%
Out[272]= True
In[273]:= alphaList = CharacterRange["a", "z"] // RandomSample[#, 12] &
Out[273]= {"l", "d", "f", "x", "o", "z", "i", "y", "w", "s", "m", "g"}
In[274]:= OrderedQ@alphaList
Out[274]= False
Again, Sort by default sorts from low to high, technically using the ASCII code for the characters.
In[275]:= Sort@alphaList
Out[275]= {"d", "f", "g", "i", "l", "m", "o", "s", "w", "x", "y", "z"}
In[276]:= OrderedQ@%
Out[276]= True
In[277]:= ToCharacterCode@alphaList
Out[277]= {{108}, {100}, {102}, {120}, {111}, {122}, {105}, {121}, {119}, {115}, {109}, \
{103}}
In[278]:= Sort@%
Out[278]= {{100}, {102}, {103}, {105}, {108}, {109}, {111}, {115}, {119}, {120}, {121}, \
{122}}
We can give OrderedQ our own ordering function, as complex as we like, to decide if the List is ordered. In this example we simply override OrderedQ's default, which is normally in accord with Sort's of ordering from small to large, and ask OrderedQ if the List is ordered from large to small.
In[281]:= OrderedQ[Sort@numericalList, Greater]
Out[281]= False
[b]
Subscribe to:
Posts (Atom)