IDL

SORT

SORT

The SORT function returns a vector of subscripts that allow access to the elements of Array in ascending order.

Examples


Example 1

A = [4, 3, 7, 1, 2]
PRINT, 'SORT(A) = ', SORT(A)
; Display the elements of A in sorted order:
PRINT, 'Elements of A in sorted order: ', A[SORT(A)]
; Display the elements of A in descending order:
PRINT, 'Elements of A in descending order: ', A[REVERSE(SORT(A))]
 

IDL prints:

SORT(A) =   3   4   1   0   2
Elements of A in sorted order:   1   2   3   4   7
Elements of A in descending order:   7   4   3   2   1

SORT(A) returns “3 4 1 0 2” because:

A[3] < A[4] < A[1] < A[0] < A[2]

Example 2

Sorting NaN Values

When sorting data including Not A Number (NaN) values, the NaN entries are moved to the end of the resulting array. For example:

values = [ 500, !VALUES.F_NAN, -500 ]
PRINT, SORT(values)

IDL prints:

2           0           1

Syntax


Result = SORT(Array [, /L64] )

Return Value


The result is always a vector of integer type with the same number of elements as Array.

Note: If Array contains any identical elements, the order in which the identical elements are sorted is arbitrary and may vary between operating systems.

Arguments


Array

The array to be sorted. Array can be any basic type of vector or array. String arrays are sorted using the ASCII collating sequence. Complex arrays are sorted by their magnitude. Array values which are Not A Number (NaN) are moved to the end of the resulting array.

Keywords


L64

By default, the result of SORT is 32-bit integer when possible, and 64-bit integer if the number of elements being sorted requires it. Set L64 to force 64-bit integers to be returned in all cases.

Note: Only 64-bit versions of IDL are capable of creating variables requiring a 64-bit sort. Check the value of !VERSION.MEMORY_BITS to see if your IDL is 64-bit or not.

Version History


Original

Introduced

See Also


REVERSE, UNIQ, WHERE

Notes


Eduardo Iturrate
For a different alternative to SORT, see An LSD radix sort algorithm in IDL.http://idldatapoint.com/2012/04/19/an-lsd-radix-sort-algorithm-in-idl/
21st March 2013 9:53am
Mark Piper
I also have column sort routine: http://idldatapoint.com/2013/04/18/a-column-sort-routine/. It allows you to extend the sort on a column to rest of a 2D array, like Excel or LibreOffice.
18th April 2013 4:10pm


This information is not subject to the controls of the International Traffic in Arms Regulations (ITAR) or the Export Administration Regulations (EAR). However, it may be restricted from transfer to various embargoed countries under U.S. laws and regulations.
© 2014 Exelis Visual Information Solutions