Hỏi về cách hoạt động của hàm std::sort() trong c++

http://thptchuyen.ntucoder.net/Problem/Details/9864
em làm bài này ạ


em code như này và AC
nhưng em không hiểu vì sao nó đúng
em vẫn chưa hiểu cách std::sort hoạt động ạ
mọi người chỉ giáo em với ạ

https://en.cppreference.com/w/cpp/algorithm/sort
Bạn chưa hiểu chỗ nào?

2 Likes

Em cũng đang thắc mắc về hàm std::sort(), cụ thể là ở argument thứ 3 của nó. Function object ở argument thứ 3 theo như em thấy đóng vai trò trong việc xếp tăng/giảm dần. Vậy cụ thể hàm bool ss (như ở ví dụ trên) sẽ return value True hay False thì sẽ sắp xếp tăng dần ạ (Mà thậm chí mình còn không biết argument xy của hàm ss đang nắm giữ giá trị như nào để mà so sánh ạ).

hàm sắp xếp nào cũng sắp xếp mảng A thành a_1, a_2, a_3, ..., a_n theo thứ tự a_1 \lesssim a_2 \lesssim a_3 \lesssim ... \lesssim a_n nào đó. Arg thứ 3 của nó là để định nghĩa hàm \lesssim này, trả về true nếu x \lesssim y. Hàm \lesssim này có thể hiểu là hàm “đứng trước”: trả về true nếu x đứng trước y sau khi sắp xếp. Nếu ko có arg 3 thì mặc định \lesssim< hay là hàm bé hơn. Nên arg 3 có kiểu là bool(T, T) thôi :V

muốn sx tăng dần thì có nghĩa là cần hàm \lesssim sao cho số bé đứng trước số lớn, vậy chỉ cần viết return x < y; là đủ :V x đứng trước y nếu x < y. Nếu sx giảm dần == số lớn đứng trước số bé thì viết return x > y; là được :V

5 Likes

dạ vâng em cảm ơn anh ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?