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

[输入]  要排序的轴:0 是水平,1 是垂直。

func_name

[输入]  比较器。 您可以指定 ENUM_SORT_MODE 枚举值之一,或您自己的比较函数。 如果未指定函数,则采用升序排序。
 
自定义比较函数可以有两种类型:

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

此处 T 是矩阵或向量的类型,而传递给 Sort 方法的附加参数 TContex 则是作为“上下文关联”变量类型。

context

[输入] 可传递给自定义排序函数的其它可选参数。

返回值

无。 排序就地执行,即它应用于调用 Sort 方法的矩阵/向量的数据。

举例

//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+
//| 脚本程序 start 函数                                                |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- 填充向量
   vector v(100);
   //--- 升序排序
   v.Sort(MyDoubleComparator);   // 此处使用了默认值为 “0” 的附加参数
   Print(v);
   // 降序排序
   v.Sort(MyDoubleComparator,1); // 此处的附加参数 “1” 是由用户显式指定的
   Print(v);
  }