Xây Dựng Comparison Function Cho Hàm Sort Trong C++


Xây dựng comparison function 

Hàm so sánh khi sử dụng hàm sort chính là tham số thứ 3 mà bạn sẽ truyền vào hàm khi sắp xếp mảng, vector. 

Hàm này có kiểu trả về là true hoặc false và có 2 tham số với kiểu dữ liệu tương ứng với mảng mà bạn muốn sắp xếp.

Tên của hàm so sánh do chúng ta đặt, ví dụ là cmp.

Cú pháp hàm so sánh : 


 
bool cmp(data_type x, data_type y){ //logic }

Logic khi trả về giá trị của hàm so sánh : 

  • Nếu muốn x đứng trước y sau khi sắp xếp thì trả về true
  • Nếu muốn x đứng sau y sau khi sắp xếp thì trả về false

x và y ở đây bạn có thể coi như đó là 2 giá trị trong mảng mà bạn cần sắp xếp, khi sắp xếp thì hàm sort cần so sánh giá trị giữa 2 phần tử này. Bạn chỉ cần kiểm tra xem thứ tự của x và y có thỏa mãn x sẽ đứng trước y theo thứ tự sắp xếp của mảng không thì bạn trả về true, ngược lạ trả về false.

Ví dụ như bạn muốn sắp xếp mảng tăng dần, vậy thì x nhỏ hơn y sẽ đứng trước y,  khi đó bạn kiểm tra nếu x < y thì bạn trả về true, ngược lại trả về false.

Ví dụ 1 : Sắp xếp mảng giảm dần 

 

#include <iostream>
#include <algorithm>

using namespace std;

bool cmp1(int a, int b){
	if(a > b)
		return true;
	else
		return false;
}

int main(){
	int a[] = {1, 3, 3, 3, 2, 1, 2, 4, 2, 4, 0, 2};
	int n = 12;
	sort(a, a + n, cmp1);
	cout << "Mang giam dan : ";
	for(int i = 0; i < n; i++){
		cout << a[i] << " ";
	}
}

 
Mang giam dan : 4 4 3 3 3 2 2 2 2 1 1 0