Sort

Сортировка матрицы или вектора по месту.

void vector::Sort(
  func_name  compare_func=NULL // функция сравнения
  T          context             // параметр для пользовательской функции сортировки
   );
 
void matrix::Sort(
  func_name  compare_func=NULL   // функция сравнения
  T          context             // параметр для пользовательской функции сортировки
   );
 
void matrix::Sort(
  const int  axis,               // ось для сортировки
  func_name  compare_func=NULL   // функция сравнения
  T          context             // параметр для пользовательской функции сортировки
   );

Параметры

axis

[in]  Ось, по которой производится сортировка: 0 — горизонтальная, 1 — вертикальная.

func_name

[in]  Компаратор. Вы можете указать одно из значений перечисления ENUM_SORT_MODE или собственную функцию сравнения. Если функция не указана, используется сортировка по возрастанию.
 
Пользовательская функция сравнения может быть двух видов:

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

Здесь T — тип матрицы или вектора, а TContex — тип переменной context, переданной в качестве дополнительного параметра в метод Sort.

context

[in]  Дополнительный необязательный параметр, который можно передать в пользовательскую функцию сортировки.

Возвращаемое значение

Нет. Сортировка производится по месту — применяется к данным матрицы/вектора, для которого вызван метод Sort.

Пример:

//+------------------------------------------------------------------+
//| Функция сортировки                                               |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Функция запуска скрипта                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- заполнение вектора
   vector v(100);
   //--- сортировка по возрастанию
   v.Sort(MyDoubleComparator);   // здесь используется дополнительный параметр со значением по умолчанию '0'
   Print(v);
   // сортировка по убыванию
   v.Sort(MyDoubleComparator,1); // здесь дополнительный параметр '1' явно указывается пользователем
   Print(v);
  }