The SDL Component Suite is an industry leading collection of components supporting scientific and engineering computing. Please visit the SDL Web site for more information....


Class:TMatrix, TIntMatrix
Declaration:procedure SortCols (SortRowIx: integer; Ascending: boolean; LowCol, LowRow, HighCol, HighRow: integer);

The method SortCols provides a means to sort the columns of a matrix, or part of it, according to the values in a single row. This row is specified by the parameter SortRowIx. The matrix is sorted column by column within the range [LowCol,LowRow] to [HighCol,HighRow]. The values outside this range are not affected (except for the row addressed by SortRowIx ). The sorting order is determined by the row SortRowIdx which is also sorted within the range [LowCol, HighCol ]. The parameter Ascending specifies whether the valus are to be sorted in ascending (TRUE) or descending (FALSE) order.

The event OnSortExchange is generated whenever two columns have to be exchanged during the sorting process. The sorting is performed by a modified bubble sort (CombSort), which has been reported to be comparable in speed to QuickSort (see also R.Box, S. Lacey, BYTE magazine, April 1991).

Hint 1: The values of the row SortRowIx are always sorted, even if this row is outside the specified sort range [LowRow, HighRow]

Hint 2: Setting both the low and high parameter of a dimension (i.e. LowCol and HighCol) to zero values forces the method to use all elements of that dimension.

Example: The statement M1.SortCols (3, true, 1, 1, M1.NrOfColumns, M1.NrOfRows) sorts the whole matrix M1 according to the values in Row 3.

Last Update: 2012-Okt-20