Sort

Clasifica una matriz o un vector según su lugar.

void vector::Sort(
  func_name  compare_func=NULL // función de comparación
  T          context             // parámetro para la función de clasificación de usuario
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // función de comparación
  T          context             // parámetro para la función de clasificación de usuario
   );
 
void matrix::Sort(
  const int  axis,               // eje para la clasificación
  func_name  compare_func=NULL   // función de comparación
  T          context             // parámetro para la función de clasificación de usuario
   );

Parámetros

axis

[in]  Eje para la clasificación: 0 – horizontal, 1 – vertical.

func_name

[in]  Comparador. Podemos especificar uno de los valores de la enumeración ENUM_SORT_MODE o nuestra propia función de comparación. Si no especificamos ninguna función, se utilizará la clasificación ascendente.
 
La función de comparación personalizada puede ser de dos tipos:

  • int comparator(T x1,T x2)
  • int comparator(T x1,T x2,TContext context)

Aquí T será el tipo de matriz o vector, mientras que TContex será el tipo de la variable context transmitida como parámetro opcional al método Sort.

context

[in]  Parámetro opcional que se puede transmitir a la función de clasificación personalizada.

Valor retornado

No. La clasificación se realiza según el lugar: se aplica a los datos de la matriz/vector para los que se llama al método Sort.

Ejemplo:

//+------------------------------------------------------------------+
//| Función de clasificación                                         |
//+------------------------------------------------------------------+
int MyDoubleComparator(double x1,double x2,int sort_mode=0)
  {
   int res=x1<x2 ? -1 : (x1>x2 ? 1 : 0);
   return(sort_mode==0 ? res : -res);
  }
//+------------------------------------------------------------------+
//| Función de inicio del script                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- rellando el vector
   vector v(100);
   //--- clasificación por orden ascendente
   v.Sort(MyDoubleComparator);   // aquí se utiliza un parámetro adicional con un valor predeterminado de '0'
   Print(v);
   // clasificación por orden descendente
   v.Sort(MyDoubleComparator,1); // aquí el usuario especificará explícitamente el parámetro adicional '1'
   Print(v);
  }