<algorithm> là thư viện có sẵn trong C++, cung cấp nhiều thuật toán để xử lý mảng, vector và các cấu trúc dữ liệu.
Để sử dụng thư viện này, chúng ta viết:
#include <algorithm>
Một số hàm thường dùng:
| Hàm | Công dụng |
|---|---|
| sort() | Sắp xếp phần tử |
| find() | Tìm một phần tử |
| max() | Tìm giá trị lớn hơn |
| min() | Tìm giá trị nhỏ hơn |
| reverse() | Đảo ngược phần tử |
| count() | Đếm số lần xuất hiện |
| swap() | Hoán đổi hai giá trị |
sort() dùng để sắp xếp các phần tử theo thứ tự tăng dần hoặc giảm dần.
sort(begin, end);
Trong đó:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {5, 2, 8, 1, 3};
sort(a, a + 5);
for (int i = 0; i < 5; i++)
{
cout << a[i] << " ";
}
return 0;
}
Kết quả:
1 2 3 5 8
sort(a, a + 5, greater<int>());
Kết quả:
8 5 3 2 1
Khi sử dụng vector, có thể dùng begin() và end().
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> a = {5, 2, 8, 1, 3};
sort(a.begin(), a.end());
for (int x : a)
{
cout << x << " ";
}
return 0;
}
Kết quả:
1 2 3 5 8
find() dùng để tìm một giá trị trong mảng hoặc vector.
find(begin, end, value);
int a[] = {10, 20, 30, 40, 50};
int *viTri = find(a, a + 5, 30);
if (viTri != a + 5)
{
cout << "Tim thay";
}
else
{
cout << "Khong tim thay";
}
Trong ví dụ trên, chương trình tìm số 30.
Kết quả:
Tim thay
Nếu không tìm thấy, find() trả về vị trí end.
max() dùng để lấy giá trị lớn hơn giữa hai giá trị.
int a = 10;
int b = 20;
int ketQua = max(a, b);
cout << ketQua;
Kết quả:
20
min() dùng để lấy giá trị nhỏ hơn giữa hai giá trị.
int a = 10;
int b = 20;
int ketQua = min(a, b);
cout << ketQua;
Kết quả:
10
reverse() dùng để đảo ngược thứ tự các phần tử.
int a[] = {1, 2, 3, 4, 5};
reverse(a, a + 5);
Kết quả:
5 4 3 2 1
count() dùng để đếm xem một giá trị xuất hiện bao nhiêu lần.
int a[] = {1, 2, 2, 3, 2, 4};
int soLan = count(a, a + 6, 2);
cout << soLan;
Kết quả:
3
Vì số 2 xuất hiện 3 lần.
swap() dùng để hoán đổi giá trị của hai biến.
int a = 10;
int b = 20;
swap(a, b);
cout << a << " " << b;
Kết quả:
20 10
Ví dụ sử dụng nhiều hàm trong thư viện <algorithm>:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> a = {5, 2, 8, 2, 1, 3};
// Sắp xếp
sort(a.begin(), a.end());
// Đảo ngược
reverse(a.begin(), a.end());
// Đếm số 2
int soLan = count(a.begin(), a.end(), 2);
// Tìm số 5
auto viTri = find(a.begin(), a.end(), 5);
// Tìm lớn nhất
int lonNhat = *max_element(a.begin(), a.end());
// Tìm nhỏ nhất
int nhoNhat = *min_element(a.begin(), a.end());
cout << "So lan xuat hien cua 2: "
<< soLan << endl;
cout << "Lon nhat: "
<< lonNhat << endl;
cout << "Nho nhat: "
<< nhoNhat << endl;
return 0;
}
| Hàm | Chức năng | Ví dụ |
|---|---|---|
| sort() | Sắp xếp | sort(a, a + n) |
| find() | Tìm phần tử | find(a, a + n, x) |
| max() | Lấy số lớn hơn | max(a, b) |
| min() | Lấy số nhỏ hơn | min(a, b) |
| reverse() | Đảo ngược | reverse(a, a + n) |
| count() | Đếm phần tử | count(a, a + n, x) |
| swap() | Hoán đổi | swap(a, b) |
| max_element() | Tìm phần tử lớn nhất | max_element(a, a + n) |
| min_element() | Tìm phần tử nhỏ nhất | min_element(a, a + n) |
Thư viện <algorithm> giúp lập trình viên sử dụng các thuật toán có sẵn thay vì phải tự viết lại từ đầu.
Các hàm nên học trước gồm: sort(), find(), max(), min(), reverse(), count(), swap().
Hướng dẫn chi tiết thư viện algorithm trong C++