The S3L_sort function sorts the elements of a one-dimensional array in ascending order.
S3L_sort_up and S3L_sort_down sort the elements of one-dimensional or multidimensional array in ascending and descending order, respectively.
S3L_sort is a special case of S3L_sort_up.
When A is one-dimensional, the result is a vector that contains the same elements as A, but arranged in ascending order (S3L_sort or S3L_sort_up) or descending order. For example, if A contains
_ _ | 7 2 4 3 1 8 6 9 5 | - - |
calling S3L_sort or S3L_sort_up would produce the result
_ _ | 1 2 3 4 5 6 7 8 9 | - - |
If A is multidimensional, the elements are sorted into an index-based sequence, starting with the first row-column index and progressing through the row indices first before advancing to the next column index position.
For example if A contains
_ _ | 6 2 7 | | | | 1 4 3 | | | | 9 5 8 | - - |
S3L_sort_up would produce the result
_ _ | 1 4 7 | | | | 2 5 8 | | | | 3 6 9 | - - |
and S3L_sort_down would produce the result
_ _ | 9 6 3 | | | | 8 5 2 | | | | 7 4 1 | - - |
S3L_sort_detailed_up and S3L_sort_detailed_down sort the elements of one-dimensional or multidimensional arrays in ascending and descending order along the axis specified by the axis argument.
The value of the axis argument is language dependent. For C/C++ applications, it must be zero-based and for F77/F90 applications, it must be one-based.
If the array referenced by A contains
_ _ | 6 2 7 | | | | 1 4 3 | | | | 9 5 8 | - - |
and a C program calls S3L_sort_detailed_up with axis = 0, upon completion, A will contain
_ _ | 1 2 3 | | | | 6 4 7 | | | | 9 5 8 | - - |
Or, if a C program calls S3L_sort_detailed_up with axis = 1, upon completion, A will contain
_ _ | 2 6 7 | | | | 1 3 4 | | | | 5 8 9 | - - |
If these calls were made from an F77 or F90 program, the axis values would need to be one greater (that is, 1 and 2, respectively) to achieve the same results.