sort pairs
- To: mathgroup at yoda.physics.unc.edu
- Subject: sort pairs
- From: nb at eeyore.stanford.edu
- Date: Thu, 11 Nov 93 16:22:45 -0800
> How can I sort pairs of values -- basing the sort on the first value
> and then break ties on the second value in the pair.
>
> Let's say I have n pairs on numbers in the following matrix
>
> data = { {x1,y1}, .....{xi, yi}, .....{xn,yn} }
>
> Using the Sort function in Mma, I can easily sort on the xi values, but
> how can I do the secondary sort on the yi values??
As you can see from the usage statement, you can specify an ordering
function as a second argument to Sort.
Sort[list] sorts the elements of list into canonical order.
Sort[list, p] sorts using the ordering function p.
Below I generate 10 pairs of integers in the range from 1 to 100.
In[1]:= data = Table[Random[Integer, {1, 100}], {10}, {2}]
Out[1]= {{25, 89}, {75, 81}, {31, 78}, {80, 58}, {65, 87},
{23, 12}, {19, 65}, {92, 97}, {54, 10}, {55, 61}}
Using a pure function, I specify an ordering function that compares
the second element in two pairs.
In[2]:= Sort[data, #2[[2]] > #1[[2]]&]
Out[2]= {{54, 10}, {23, 12}, {80, 58}, {55, 61}, {19, 65},
{31, 78}, {75, 81}, {65, 87}, {25, 89}, {92, 97}}
The pairs are now sorted according to the value of the second element
in each pair.
Nancy Blachman