The C++ interface for sortdim. More...

array sortdim (const array &in, int dim=0)
 Sort treating one dimension as keys in specific order. More...
 
array sortdim (const array &in, int dim, unsigned norder, const int *h_order)
 Sort treating one dimension as keys in specific order. More...
 

Detailed Description

The C++ interface for sortdim.

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);

Function Documentation

array af::sortdim ( const array &  in,
int  dim = 0 
)

Sort treating one dimension as keys in specific order.

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);
Parameters
[in]in
[in]dimdimension along which to sort
array af::sortdim ( const array &  in,
int  dim,
unsigned  norder,
const int *  h_order 
)

Sort treating one dimension as keys in specific order.

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

The horder parameter can be used to specify the key of the order and ascending or descending sort.

// Sort rows based on 4th and 2nd columns.
array a = floor(5 * randu(5,5));
const int order[] = {3, 1};
array d = sortdim(a, 0, 2, order);
Parameters
[in]in
[in]dimdimension along which to sort
[in]h_orderHost array specifying key order and directions of sort
[in]norderNumber of elements in h_order