Sort

Classificação de uma matriz ou vetor no lugar.

void vector::Sort(
  func_name  compare_func=NULL // função de comparação
  T          context             // parâmetro para a função de classificação personalizada
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // função de comparação
  T          context             // parâmetro para a função de classificação personalizada
   );
 
void matrix::Sort(
  const int  axis,               // eixo para classificação
  func_name  compare_func=NULL   // função de comparação
  T          context             // parâmetro para a função de classificação personalizada
   );

Parâmetros

axis

[in]  Eixo para a realização da classificação: 0 – horizontal, 1 – vertical.

func_name

[in]  Comparador. Você pode especificar um dos valores da enumeração ENUM_SORT_MODE ou sua própria função de comparação. Se nenhuma função for especificada, é utilizada a classificação ascendente.
 
A função de comparação personalizada pode ser de dois tipos:

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

Neste caso T – tipo de matriz ou vetor, já TContex – tipo de variável context, passado como um parâmetro adicional ao método Sort.

context

[in]  Parâmetro opcional adicional que pode ser passado para uma função de classificação personalizada.

Valor retornado

Não. A classificação é realizada no local, isto é, aplicada aos dados da matriz/vetor para o qual o método Sort é chamado.

Exemplo:

//+------------------------------------------------------------------+
//| Função de classificação                                          |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Função para executar o script                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- preenchimento do vetor
   vector v(100);
   //--- classificação ascendente
   v.Sort(MyDoubleComparator);   // neste caso é utilizado um parâmetro adicional com um valor padrão '0'
   Print(v);
   // classificação decrescente
   v.Sort(MyDoubleComparator,1); // aqui o parâmetro opcional '1' é explicitamente especificado pelo usuário
   Print(v);
  }