Những hàm quan trọng trong Thư viện Algorithm

Lập trình C++

Trong bài viết trước chúng tôi đã trao đổi với các bạn về tầm quan trọng cũng như một số hàm quan trọng trong thư viện Algorithm của C++. Nâng cao hơn, chúng ta cùng nhau tìm hiểu sâu hơn các hàm này trong quá trình giải các bài toán Tin học về lý thuyết số trong C++. Bắt đầu thôi.

1. Hàm tính giá trị lớn nhất, nhỏ nhất

Ngoài việc tìm giá trị lớn nhất (max) hay giá trị nhỏ nhất (min) của hai số. Algorithm cho phép chúng ta tìm giá trị lớn nhất và nhỏ nhất của nhiều số hoặc của mảng.

  • Tìm min, max của hai số: min(a, b), max(a, b)
  • Tìm min, max của nhiều số: min({a, b, c, d, e}), max({a, b, c, d, e})
  • Tìm min, max của mảng a với số lượng phần tử n: *min_element(a, a + n) hay *max_element(a, a + n)

2. Hàm tính tổng accumulate: Algorithm cho chúng ta hàm tính tổng của cả mảng dữ liệu a với số lượng phần tử n rất đơn giản với câu lệnh: accumulate(a, a + n, 0). Trong đó 0 là giá trị khởi tạo ban đầu của tổng các phần tử của mảng a.

3. Hàm đổi vị trí hai phần tử swap: Để đổi chỗ hai phần tử của mảng trong lập trình, chúng ta cần một biến trung gian để thực hiện việc tráo đổi hai vị trí. Tuy nhiên, với C++ bạn không cần phải làm như vậy. Chỉ đơn giản bằng câu lệnh: swap(a, b).

4. Hàm sắp xếp dữ liệu sort: Thư viện Algorith cung cấp cho chúng ta hàm sắp xếp mảng (hoặc vector) cực kỳ hiệu quả và hữu ích về tốc độ nó có thể nhanh hơn cả Quicksoft. Chính vì vậy, trong quá trình lập trình bạn nên sử dụng hàm này.

  • Sắp xếp mảng a với số lượng phần tử n tăng dần: sort(a, a + n)
  • Sắp xếp mảng a với số lượng phần tử n giảm dần: sort(a, a + n, greater<int>());

Lưu ý: Với sắp xếp dữ liệu giảm dần bạn hoàn toàn có thể xây dựng một hàm riêng để sắp xếp cho soft hoặc sử dụng greater<kiểu dữ liệu>() như trên.

Ví dụ tạo một hàm giảm dần đơn giản:

bool giam(int a, int b)
       return a > b;

Tiếp đó bạn gọi hàm soft: soft(a, a + n, giam)

5. Hàm tìm kiếm nhị phân binary_search: Đây là một hàm tuyệt vời giúp bạn nhanh chóng tìm kiếm vị trí của phần tử x trong mảng a với n phần tử: binary_search(a, a+n, x)

6. Hàm gán toàn bộ giá trị cho một mảng dữ liệu menset: Bạn hoàn toàn có thể gán giá trị cho một mảng dữ liệu với một giá trị 1 nào đó: memset(a, 1, sizeof(a)). Lưu ý: Ở đây bạn chỉ có thể gán cho mảng giá trị 0 hặc 1.

7. Hàm sinh hoán vị next_permutation (prev_permutaiton): Đây là một hàm cực kỳ hữu ích khi bạn cần liệt kê các cấu hình hoán vị mà không cần phải tự tay lập trình.

8. Hàm đảo ngược dãy số reverse: Hàm này sẽ giúp bạn đảo ngược nhanh chóng một mảng dữ liệu a với n phần từ từ vị trí i đến n rất đơn giản: reverse(a + i + 1, a + n + 1);

3 thoughts on “Những hàm quan trọng trong Thư viện Algorithm

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *