跳转至

A column sort routine

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/a-column-sort-routine

19012 Rate this article:

No rating

A column sort routine

Anonym Thursday, April 18, 2013

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.

Apps and Enterprise Architectures Addressing Budget Constraints with Innovation and Creativity