Sort
Sắp xếp một ma trận hoặc vector tại chỗ.
cpp
void vector::Sort(
func_name compare_func=NULL, // hàm so sánh
T context // tham số cho hàm sắp xếp tùy chỉnh
);
void matrix::Sort(
func_name compare_func=NULL // hàm so sánh
T context // tham số cho hàm sắp xếp tùy chỉnh
);
void matrix::Sort(
const int axis, // trục để sắp xếp
func_name compare_func=NULL // hàm so sánh
T context // tham số cho hàm sắp xếp tùy chỉnh
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Tham số
axis
[in] Trục để sắp xếp: 0 là ngang, 1 là dọc.
func_name
[in] Bộ so sánh. Bạn có thể chỉ định một trong các giá trị của bảng liệt kê ENUM_SORT_MODE hoặc hàm so sánh của riêng bạn. Nếu không chỉ định hàm, sắp xếp tăng dần sẽ được sử dụng.
Hàm so sánh tùy chỉnh có thể thuộc hai loại:
int comparator(T x1,T x2)
int comparator(T x1,T x2,TContext context)
Ở đây T
là kiểu của ma trận hoặc vector, và TContext
là kiểu của biến context
được truyền dưới dạng tham số bổ sung cho phương thức Sort
.
context
[in] Tham số tùy chọn bổ sung có thể được truyền vào hàm sắp xếp tùy chỉnh.
Giá trị trả về
Không có. Việc sắp xếp được thực hiện tại chỗ, tức là áp dụng trực tiếp lên dữ liệu của ma trận/vector mà phương thức Sort
được gọi.
Ví dụ
cpp
//+------------------------------------------------------------------+
//| Sort function |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| Script start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- fill the vector
vector v(100);
//--- sort ascending
v.Sort(MyDoubleComparator); // một tham số bổ sung với giá trị mặc định '0' được sử dụng ở đây
Print(v);
// sort descending
v.Sort(MyDoubleComparator,1); // ở đây tham số bổ sung '1' được người dùng chỉ định rõ ràng
Print(v);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22