>  Docs Center  >  Libraries  >  Markwardt  >  MULTISORT






  Craig B. Markwardt, NASA/GSFC Code 662, Greenbelt, MD 20770


  Perform a sorting operation with multiple sort keys

Calling Sequence

  INDICES = MULTISORT(KEY1, KEY2, ..., [/L64, ], [ORDER=order])


  The function MULTISORT performs a sorting operation with multiple
  sort keys. Unlike the IDL built-in SORT() function, which can
  only sort a single key, MULTISORT can accept multiple keys. In
  cases where the primary key is equal, the sort order is based on
  any secondary keys provided. The return value is an array of
  indices which will place the key arrays into sorted order.
  MULTISORT works by building an internal sort key string which can
  be sorted in a single pass. Because MULTISORT is not a built-in
  function, and because it must build these auxiliary strings, it
  cannot be as fast or memory-efficient as the built-in function.
  Users will need several times more memory than the memory used
  to store just the input keys.
  MULTISORT() allows the user to choose the sort order for each key
  separately. The ORDER keyword is an N-vector, one order for each
  input key. ORDER[i] is +1 to sort KEYi ascending, and ORDER[i] is
  -1 to sort KEYi descending.


  KEY1, KEY2, ... KEY9 - input sort keys. Any integer, floating
                          point or string value is allowed. The
                          number of values must be the same for each


  ORDER - an N-vector, giving the sort order for each key (see
          documentation above).
          Default: REPLICATE(+1,N_PARAMS()) (all keys ascending)
  L64 - if set, then return a LONG64 index instead of LONG.


  An array of indices which will place the keys into sorted order.
  I.e., KEYS1[INDICES], KEYS2[INDICES] ... will be in order.

See Also


Modification History

  Written, CM, Jun 2007
  Document the encoding format, and make some floating point
    operations more efficient, CM, Jan 2008
  Correct several bugs in the handling of floating point numbers
    in the range -1.0 to 1.0, made more efficient, (thanks to Eric
    Jensen); I also saved some test cases; CM, Jul 2008

© 2022 Harris Geospatial Solutions, Inc. |  Legal
My Account    |    Store    |    Contact Us