10274 Rate this article:
No rating

A column sort routine

Anonym
In spreadsheet programs like Excel or LibreOffice, you can apply a sort on a column to every other column in the spreadsheet. IDL's SORT function doesn't provide this functionality, but with a little code, we can make it so. The function COLSORT (get the source code here) accepts a 2D array and the zero-based index of the column to sort on. By default, values are sorted in ascending order; a keyword can be set to sort in descending order. Here's an example of how the routine works. Start with a 4 x 5 array of numbers:
IDL> a = round(randomu(seed, 4, 5) * 20.0)
IDL> print, 'Original array:', a, format='(a,/,4(i))'
Original array:
           8           6          14          10
           4           9          18           5
           1          11          13          18
           8           9          11           9
           3          19           4          16
Use COLSORT to perform a reverse sort on column index 1 (the second column) and extend the sort to the other columns in the array:
IDL> sort_index = 1
IDL> b = colsort(a, sort_index, /reverse_sort)
Check the result:
IDL> print, 'Sorted (descending) array:', b, format='(a,/,4(i))'
Sorted (descending) array:
           3          19           4          16
           1          11          13          18
           8           9          11           9
           4           9          18           5
           8           6          14          10
This program could be extended to apply to rows and to arrays of higher dimensionality.

SIGN UP AND STAY INFORMED

Sign up to receive the latest news, events, technologies and special offers.

SIGN ME UP