- Abstract
Re-order the elements of an integer array according to
a given order vector.
- Required_Reading
None.
- Brief_I/O
VARIABLE I/O DESCRIPTION
-------- --- --------------------------------------------------
iorder I Order vector to be used to re-order array.
ndim I Dimension of array.
array I/O Array to be re-ordered.
- Detailed_Input
iorder is the order vector to be used to re-order the input
array. The first element of iorder is the index of
the first item of the re-ordered array, and so on.
Note that the order imposed by reordi_c is not the
same order that would be imposed by a sorting
routine. In general, the order vector will have
been created (by one of the order routines) for
a related array, as illustrated in the example below.
The elements of iorder range from zero to ndim-1.
ndim is the number of elements in the input array.
array on input, is an array containing some number of
elements in unspecified order.
- Detailed_Output
array on output, is the same array, with the elements
in re-ordered as specified by iorder.
- Parameters
None.
- Particulars
reordi_c uses a cyclical algorithm to re-order the elements of
the array in place. After re-ordering, element iorder[0] of
the input array is the first element of the output array,
element iorder[1] is the input array is the second element of
the output array, and so on.
The order vector used by reordi_c is typically created for
a related array by one of the order*_c routines, as shown in
the example below.
- Examples
In the following example, the order*_c and reord*_c routines are
used to sort four related arrays (containing the names,
masses, integer ID codes, and visual magnitudes for a group
of satellites). This is representative of the typical use of
these routines.
#include "SpiceUsr.h"
.
.
.
/.
Sort the object arrays by name.
./
orderc_c ( namlen, names, n, iorder );
reordc_c ( iorder, n, namlen, names );
reordd_c ( iorder, n, masses );
reordi_c ( iorder, n, codes );
reordd_c ( iorder, n, vmags );
- Restrictions
None.
- Exceptions
1) If memory cannot be allocated to create a Fortran-style version of
the input order vector, the error SPICE(MALLOCFAILED) is signaled.
2) If ndim < 2, this routine executes a no-op. This case is
not an error.
- Files
None.
- Author_and_Institution
N.J. Bachman (JPL)
W.L. Taber (JPL)
I.M. Underwood (JPL)
- Literature_References
None.
- Version
-CSPICE Version 1.0.0, 10-JUL-2002 (NJB) (WLT) (IMU)
- Index_Entries
reorder an integer array
- Link to routine source