Hỏi về lệnh sort trong C++

Mọi người cho em hỏi cái này với ạ, trong một số chương trình mẫu, em thường thấy có lệnh sort như này

sort(a,  a+n, comp);

vậy thì cái “comp” kia có tác dụng gì không vậy ah???

comp là 1 hàm thực hiện thao tác kiểm tra và trả về true (1) hoặc false (0) để sort() có thể sắp xếp.

3 Likes

comp là hàm nhận 2 tham số x y và trả về boolean true/false, true nếu x đứng trước y, fasle nếu ngược lại (x đứng sau hoặc đứng ngang hàng với y)

ví dụ muốn sắp xếp mảng sao cho số chẵn đứng trước số lẻ, số chẵn giảm dần, số lẻ tăng dần thì viết hàm comp thế này:

bool comp(int x, int y)
{
    bool xEven = x % 2 == 0;
    bool yEven = y % 2 == 0;

    // x và y cùng chẵn, đề yêu cầu số chẵn giảm dần
    // nghĩa là x đứng trước y nếu x > y
    if (xEven && yEven) return x > y;

    // x và y cùng lẻ, đề yêu cầu số lẻ tăng dần
    // nghĩa là x đứng trước y nếu x < y
    if (!xEven && !yEven) return x < y;

    // x lẻ y chẵn hoặc x chẵn y lẻ, đề yêu cầu chẵn trước lẻ
    // nghĩa là x đứng trước y nếu x chẵn
    return xEven;
}
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?