Index Page
reordi_c
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 

Procedure
Abstract
Required_Reading
Keywords
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version
Index_Entries

Procedure

   void reordi_c ( ConstSpiceInt   * iorder,
                   SpiceInt          ndim,      
                   SpiceInt        * array ) 

Abstract

 
    Re-order the elements of an integer array according to 
    a given order vector. 
 

Required_Reading

 
   None. 
 

Keywords

 
    ARRAY,  SORT 
 

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. 
 

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. 
 

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. 
  

Literature_References

 
   None. 
 

Author_and_Institution

 
   N.J. Bachman    (JPL)
   W.L. Taber      (JPL) 
   I.M. Underwood  (JPL) 
 

Version

 
   -CSPICE Version 1.0.0, 10-JUL-2002 (NJB) (WLT) (IMU)

Index_Entries

 
   reorder an integer array 
 

Link to routine reordi_c source file reordi_c.c

Wed Apr  5 17:54:41 2017