Home
Manual
Packages
Global Index
Keywords
Quick Reference
|
2.4 Sorting
The function sort returns an index list:
The list has the same length as the input vector x, and list(1) is
the index of the smallest element of x, list(2) the index of the
next smallest, and so on. Thus, x(list) will be x sorted
into ascending order.
By returning an index list instead of the sorted array, sort
simplifies the co-sorting of other arrays. For example, consider a
series of elaborate experiments. On each experiment, thermonuclear
yield and laser input energy are measured, as well as fuel mass. These
might reasonably be stored in three vectors yield, input,
and mass, each of which is a 1D array with as many elements as
experiments performed. The order of the elements in the arrays maight
naturally be the order in which the experiments were performed, so that
yield(3), input(3), and mass(3) represent the third
experiment. The experiments can be sorted into order of increasing
gain (yield per unit input energy) as follows:
| list = sort(yield/input);
yield = yield(list);
input = input(list);
mass = mass(list);
|
The inverse list, which will return them to their orginal order, is:
| invlist = list; /* faster than array(0, dimsof(list)) */
invlist(list) = indgen(numberof(list));
|
The sort function actually sorts along only one index of a
multi-dimensional array. The dimensions of the returned list are the
same as the dimensions of the input array; the values are indices
relative to the beginning of the entire array, not indices for the
dimension being sorted. Thus, x(sort(x)) is the array x
sorted so that the elements along its first dimension are in ascending
order. In order to sort along another dimension, pass sort a
second argument -- x(sort(x,2)) will be x sorted into
increasing order along its second dimension, x(sort(x,3)) along
its third dimension, and so on.
A related function is median. It takes one or two arguments, just
like sort, but its result -- which is, of course, the median
values along the dimension being sorted -- has one fewer dimension than
its input.
|