Sort an array or matrix along a dimension. More...

Modules

 sort
 The C++ interface for sort.
 
 sortdim
 The C++ interface for sortdim.
 
 af_sort
 The C interface for sort.
 
 af_issorted
 The C interface for issorted.
 
 af_sortrows
 The C interface for sortrows.
 

Detailed Description

Sort an array or matrix along a dimension.

Sorting an array reorders the elements in the array along the dimension specified.

The defualt order is ascending order. That is, the smallest element along the dimension is places at the first index location and the largest element is placed at the last location. To sort in descending order, set the isdescending flag to true.

The indices array parameter can be used to retrieve the indices of the elements before the sort.

array a = rand(5); //a = [6]
// [9]
// [1]
// [7]
// [4]
a = sort(a,0); //a = [1]
// [4]
// [6]
// [7]
// [9]
array a = rand(5); //a = [6]
// [9]
// [1]
// [7]
// [4]
array out,indices;
sort(out,indices,a,0);
//out,indices = [1],[2]
// [4],[4]
// [6],[0]
// [7],[3]
// [9],[1]

The next sort function can sort the values of an array (value) based on another array (key). The function first sorts the key array and uses the indices from this sort to reorder the value array.

float keys[] = {1, 6, 2, 5, 3, 4};
array value(6,1,values); // [5 10 41 2 5 7]
array key(6,1,keys); // [1 6 2 5 3 4]
array outkeys,outvalues;
sort(outkeys,outvalues,key,value);
print(outvalues); // [5 41 5 7 2 10]
print(outkeys); // [1 2 3 4 5 6]

The function sortdim uses one of the dimensions as key to sort the array.

// sort rows based on first column
array a = floor(5 * randu(5,5));
array b = sortdim(a);
array a = floor(5 * randu(5,5));
const int order[] = {3, 1};
array d = sortdim(a, 0, 2, order);